본문 바로가기

네트워크&통신

(4)
(네트워크) CORS 동작 방식 1. Preflight Request 실제 요청 보내기 전 OPTION 메소드로 사전 요청을 보내어 해당 출처에 접근 권한이 있는지 확인한다. 브라우저가 프리프라이트 요청을 보내고, 서버에서 응답 헤더 Allow-Control-Allow-Origin 값으로 요청을 보낸 출처가 돌아오게 되면 실제 요청을 보내게 된다. Preflight Request Origin: http://localhost:3000/ Response Allow-Control-Allow-Origin: http://localhost:3000/ 만약 출처에 대한 접근 권한이 없다면 응답 헤더에 Allow-Control-Allow-Origin가 들어 있지 않다. 이런 경우 브라우저는 CORS 에러를 띄우게 되고 실제 요청은 전달되지 않는다. ..
(네트워크&통신) 보안 위변조, 세션방식 탈취 사용의 의미 세션 방식에서는 세션을 식별할 수 있는 session_Id가 발급된다. A의 세션아이디를 탈취해서 B가 A의 키로 접속하면 A의 계정으로 로그인할 수 있다. JWT도 마찬가지이다. 이건 단순한 탈취이지 위변조라고 하지는 않는다. A의 세션Id나 토큰을 모르는 상태서 B가 A의 공개된 정보를 이용해 키를 만들어낼 수 있는가? 혹은 B 자신의 토큰을 변조해서 높은 권한을 취득할 수 있는가를 등을 보통 위변조라고 한다. 세션이나 JWT 모두 이렇게 하기는 어렵다. 탈취해서 사용하는 경우를 막으려면 첫째, 토큰의 탈취를 어렵게 한다. 둘째. 토큰을 탈취해도 사용하기 어렵게 만든다 는 방법이 있다. httpOnly / httpsOnly cookie에 보관하면 적어도 XSS 등에 의해 탈취되는건 ..
(HTTP) Server(Backend) 측면에서 CORS (Cross-Origin Resource Sharing). 교차 출처 자원 공유 Cors는 HTTP 헤더를 사용하여 특정 Origin에서 자원을 받아서 실행 중인 웹 애플리케이션이 다른 origin(domain, scheme, port)에서 선택한 자원에 접근할 수 있는 권한을 부여하도록 브라우저에 알려주는 체계이다. 웹 애플리케이션은 preflight시에 자원이 자신의 origin과 다를 때 Cors HTTP 요청을 하게 된다. JS의 통신에서 XMLHttpRequest 객체나 fetch API는 same-origin 정책을 따르기 때문에 웹 애플리케이션은 자신의 origin과 동일한 origin의 자원만 요청할 수 있다. 만일 다른 origin에서 자원을 요청하려면 요청 받은 다른 origin에서 올바른 Cors 헤더를 포함한 응답을 반환해야 한다. 이는 브라우저가 자발적으로 브..
(네트워크/통신) HTTP 구조 HTTP Request 메소드 클라이언트가 웹 서버에게 사용자 요청의 목적/종류를 알리는 수단 최초의 HTTP에서 메소드는 GET밖에 존재하지 않았고 응답은 무조건 HTML문서 였다. HTTP 메소드 종류 전송 형태 설명 GET GET [request-uri]?query_string HTTP/1.1\r\n Host:[Hostname] 혹은 [IP]\r\n URI(URL) 형식으로 서버 측 리소스(데이터) 요청 POST POST [request-uri]?query_string HTTP/1.1\r\n HOST:[Hostname] 혹은 [IP] \r\n Content-Lenght:[Lenght in Bytes] \r\n \r\n [query-string] 혹은 [데이터] URI(URL)에 폼 입력을 처리하기 ..