본문 바로가기

WEB

(5)
PRG 패턴 (Post-Redirect-Get) - 삽질중인 개발자 최근 발생한 이슈 중 중복 결제에 대한 이슈가 있어서 원인을 찾아보는 중에 브라우저에서 새로고침이나 뒤로 가기를 했을 경우 이전에 보내진 POST 요청이 다시 보내져 중복 결제가 일어나는 버그가 있다는 것을 발견했다. 이러한 새로고침 버그에 대해서 회피할 수 있는 방법을 찾아보는 중 PRG 패턴에 대해서 알게 되어 정리 차원에서 포스팅을 한다. PRG 패턴 (Post-Redirect-Get) 웹 개발 패턴 중 자주 쓰이는 패턴으로 HTTP POST 요청에 대한 응답이 또 다른 URL로의 GET 요청을 위한 리다이렉트(응답 코드가 3XX) 여야 한다는 것을 의미한다. 즉, 쉽게 설명하면 POST 방식으로 온 요청에 대해서 GET 방식의 웹페이지로 리다이렉트 시키는 패턴을 말한다. PRG 패턴을 사용하지 않..
HTTP 구조 정리 - 삽질중인 개발자 - HTTP 구조 정리 - 개발을 하게 된다면 외부 API를 사용해야하는 경우가 많이있다. Rest API는 HTTP 구조로 되어 있어 HTTP 구조에 대해서 모르면 삽질을 많이 할 수 도 있어서 정리한다. 1. HTTP란 HyperText Transfer Protocol 의 약자 하이퍼텍스트(HTML) 문서를 교환하기 위해 만들어진 통신 규약 서버간 네트워크 통신시 어떠한 형식으로 통신할지에 대해 정해둔 규약 2. HTTP 메세지 기본 구조 기본적인 HTTP의 구조는 아래와 같다. 시작 라인 Response인지 Request 인지에 따라 약간 형태가 다르다. 헤더 header-field: field-value 으로 구성되어 있다. HTTP 전송에 필요한 모든 부가정보를 가지고 있다. 메시지 본문 메세지..
CSRF (Cross Site Request Forgery)공격이란? - 삽질중인 개발자 - CSRF ( 사이트 간 요청 위조 ) - 1. CSRF ( Cross Site Request Forgery ) 란? 사이트 간 요청 위조 사용자가 자신의 의지와 무관하게 공격자가 의도한 행동을 하여 특정 웹페이지를 보안에 취약하게 한다거나 수정, 삭제 등의 작업을 하게 만드는 공격 방법 2. 어떤식으로 동작하는가? ( 이미지 태그를 통한 공격 ) A라는 사이트의 관리자 권한을 갖고 있는 유저가 A라는 사이트에 로그인되어 있는 상태이고 A라는 사이트에 관리자가 유저의 권한을 변경할 때 사용되는 다음과 같은 URL이 있다고 할 때 GET /changeUserAuth?id=programmer93&auth=ROLE_ADMIN ( programmer93의 권한을 admin으로 변경 ) 공격자가 사용자한테 무작..
HTTP 메소드 PUT , PATCH 차이 - 삽질중인 개발자 HTTP Method 중에 PUT와 PATCH는 리소스의 업데이트를 의미한다. 리소스를 업데이트 한다는 점에서는 같은 역할을 하는 메소드처럼 보이지만 두개의 요청에는 약간의 차이가 있다. PUT : 리소스의 모든 것을 업데이트 한다. PATCH : 리소스의 일부를 업데이트 한다. 아래와 같은 회원이라는 리소스가 있다. 회원 (member) 1 이름 (name) 애용이 나이 (age) 10 성별 (gender) M 아래와 같은 요청을 보내면 PUT /members/1 { name : "홍길동", age : 19, gender : "M" } 회원 (member) 1 이름 (name) 홍길동 나이 (age) 19 성별 (gender) M 위와 같이 변한다. 이번에는 나이와 성별를 빼고 요청을 보내면 PUT /..
HTTP 요청 메소드 정리 - 삽질중인 개발자 HTTP 메소드의 종류 GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS, CONNECT, TRACE HTTP 메소드의 사용법 1. GET 클라이언트가 서버에 리소스를 요청할 때 사용 ( CRUD 에서 Read ) 2. POST 클라이언트가 서버의 리소스를 새로 만들 때 사용 ( CRUD 에서 Create ) 3. PUT 클라이언트가 서버의 리소스를 수정 할 때 사용 ( CRUD에서 Update : 전체 수정 ) 4. PATCH 클라이언트가 서버의 리소스를 수정 할 때 사용 ( CRUD에서 Update : 일부 수정 ) 5. DELETE 클라이언트가 서버의 리소스를 삭제 할 때 사용 ( CRUD에서 Delete ) 6. HEAD 클라이언트가 서버의 정상 작동 여부를 확인 할..