저번에 리액트 프로젝트를 하면서 로그인 api 찌를 때 header에 X-Requset-With를 써주지 않으면 cors 에러가 떠서 찾아본 적이 있었다.
같은 내용을 백엔드 팀 동료가 질문했는데 '보안 강화' 라는 것만 어렴풋이 생각나서 이번 기회에 관련 내용들을 다시 공부하고 정리한다.
해당 요청이 Ajax라는 것을 의미한다.
X-Requested-With을 쓰는 이유는 CORS를 통해 서버 동의 없이 Ajax 요청을 할 수 없기에 CSRF 공격을 방지할 수 있다. 즉 보안을 강화시켜준다.
위 설명에서 CORS, CSRF가 뭐냐고 물어보면 명확하게 대답하기 어려워서 더 찾아 보았다.
Cross Origin Resource Sharing
한 도메인 또는 Origin의 웹 페이지가 다른 도메인을 가진 리소스에 엑세스 할 수 있게 하는 보안 메커니즘이다.
CORS는 서버와 클라이언트가 정해진 헤더를 통해 서로 요청이나 응답에 반응할지 결정하는 방식으로 CORS라는 이름으로 표준화되었다.
이 개념은 동일 출저 정책이 나오면서 생기게 되었는데 동일 출처 정책이 무엇이지 알아보자.
동일한 출처의 리소스에만 접근하도록 제한 하는 것이다.
여기서 동일한 출처란 프로토콜, 호스트명, 포트가 같다는 것을 의미한다.
예를 들어
https://naver.com:80 의 경우 https가 포로토콜, naver.com이 호스트명 80은 포트를 말한다.
악성 웹 사이트 공격이다.
사용자가 자신의 의지와 무관하게 공격자가 의도한 행동을 해서 특정 웹페이지를 보안에 취약하게 한다거나 수정, 삭제 등의 작업을 하게 만드는 공격 방법이다.
요즘 HTTP 완벽가이드 읽고 있는데 확실히 도움이 되는 내용들이 있는것 같다 읽기 전에는 좀 덜 와닿았던 것들이 좀 더 이해되고 기억되는 느낌이다. 책 내용을 백퍼센트 얻어가지 못해도 읽어보는 것 추천.