본문 바로가기

전체 글315

[웹보안] CSRF Cross-Site Request and Its Problems만약 한 사이트 내부에서 다른 사이트로 요청을 보낸다면 이를 cross site request라고 부른다.예를 들어 페이스북이 아닌 사이트에서 페이스북이 포함된 링크를 눌러서 페이스북으로 요청이 가는 것만약 example.com에서 요청을 보내면 브라우저는 example.com의 쿠키를 붙여서 요청을 보낸다.만약 example.com 말고 다른 사이트로 요청해도 거기에도 브라우저가 쿠키를 붙일 것이다.서버는 이러한 브라우저의 특성때문에 해당 요청이 same-site요청인지 cross-site요청인지 구분이 어렵다.따라서 서버는 cross-site 요청을 정상적인 요청이라고 판단할수도 있다. → 이걸 CSRF라고 부른다.CSRF공격자는 cros.. 2025. 4. 28.
[웹보안] 네트워크와 웹보안 1주차 - 네트워크와 웹보안웹 보안 목적 - 무결성(a가 b사이트에 영향 안미침), 기밀성(a사이트가 b사이트의 정보를 빼앗지 않아야한다.)HTTP 프로토콜 - 클라이언트, 서버가 이를 통해 소통함쿠키서버가 브라우저에 보내는 작은 데이터 조각브라우저는 이를 저장하고, 같은 서버에 다시 보낸다.세션관리, 개인화, 추적에 사용된다.서버가 브라우저에 이렇게 쿠키 설정브라우저가 서버에는 이렇게 전달브라우저는 임의로 쿠키 수정해서 보낼 수 있다.→ 일반적으로 암호화 된 비밀값을 저장하거나, 고유 세션 식별자를 사용한다.HTML 불러옴 → 자바스크립트 수행 → 내부 참조 이미지 추가 요청 → 사용자 이벤트에 대응Frames웹페이지 안에 다른 출처 콘텐츠 삽입frame : 페이지 가장자리 위치iframe : 페이지 .. 2025. 4. 28.
[Spring] 서블릿, JSP, MVC패턴 회원관리 웹 애플리케이션 요구사항회원관리 웹을 만들고자 한다 package hello.servlet.domain.member; import lombok.Getter; import lombok.Setter; @Getter @Setter public class Member { private Long id; private String username; private int age; public Member() { } public Member(String username, int age) { this.username = username; this.age = age;} }회원 정보는 다음과 같다 package hello.servlet... 2025. 4. 7.
[Spring] 서블릿 Hello 서블릿서블릿은 원래 톰캣같은 웹 애플리케이션 서버를 직접 설치하고, 그 위에 서블릿 코드를 클래스 파일로 빌드해서 올린다음 톰캣서버를 실행해야하는데, 스프링부트는 톰캣서버를 내장하고있어서 편리하게 서블릿 코드를 실행할 수 있다. 스프링부트에서 서블릿을 직접 등록해서 사용하려면package hello.servlet; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.web.servlet.ServletComponentScan; @ServletComponentScan //서블릿 .. 2025. 4. 4.
[Spring] 웹 애플리케이션의 이해 웹 서버, 웹 애플리케이션 서버웹은 HTTP 기반으로 통신한다.웹 서버HTTP 기반으로 동작한다.정적인 리소스를 제공한다정적이란? HTML, CSS, JS, 이미지, 영상 등 웹 애플리케이션 서버(WAS - Web Application Server)HTTP 기반으로 동작웹 서버 기능 + 정적 리소스 제공프로그램 코드를 실행해서 애플리케이션 로직을 실행동적이란? 동적 HTML, HTTP API(JSON), 서블릿, JSP, 스프링 MVC 웹 서버는 정적리소스, WAS는 애플리케이션 로직WAS는 애플리케이션 코드를 실행하는데 더 특화되어있다. WAS는 동적, 정적 리소스를 모두 제공 가능하니까 이런식으로 구성할 수 있다.하지만 WAS에 장애가 발생한다면? 사용자는 에러화면조차 보지 못한다.따라서 정적 리소스.. 2025. 3. 30.
[네트워크] HTTP 헤더 - 캐시와 조건부 요청 캐시 기본 동작기본적으로 웹 브라우저가 서버에게 요청을 하면 서버는 해당 정보를 모두 준다.여기서는 1.1M 용량을 클라이언트에게 전송했다. 만약 두번째 요청을 한다면?마찬가지로 서버는 1.1M용량의 별 사진을 보낼 것이다. 이렇게 하면 브라우저 로딩 속도 저하, 비용문제 등등이 발생한다.따라서 캐시 컨트롤을 통해서 캐시를 적용하면 브라우저 캐시에 해당 정보가 저장된다.그러면 사용자가 60초 내에 다시 요청을 하게되면 서버에 요청을 하여 데이터를 얻는 것이 아니라, 브라우저 캐시를 통해서 얻게 된다. 만약 60초가 초과된다면? 다시 서버에 요청을 하게된다.이때 별 사진에 업데이트 된 내용이 없더라도 다시 네트워크 다운로드가 발생한다.  검증 헤더와 조건부 요청만약 2번의 경우라면? 다시 요청해서 모든 정.. 2025. 3. 28.