-
Browser Security (CORS, XSS, CSRF)concept/server 2020. 5. 24. 22:40
브라우저는 다양한 공격을 받을 수 있다.
CORS (Cross-Origin Resource Sharing)
https://developer.mozilla.org/ko/docs/Web/HTTP/CORS
Cross-Origin Resource Sharing (교차출처자원을 공유한다.)
보안적인 이유로, 브라우저는 스크립트 내에서 시작한 cross-origin HTTP request 를 제한합니다.
즉, 이 API를 사용하는 웹 애플리케이션은 자신의 출처와 동일한 리소스만 불러올 수 있으며, 다른 출처의 리소스를 불러오려면 그 출처에서 올바른 CORS 헤더를 포함한 응답을 반환해야 합니다.
=> 웹 애플리케이션의 사용자를 보호하기 위한 브라우저만의 자발적인 보안조치브라우저간의 데이터를 주고받는 과정에서 도메인 이름이 서로 다른 사이트간에 API요청을 할 때, 공유를 설정하지 않으면 CORS 에러가 발생한다.
액세스를 컨트롤하는 예시가 있는데 그것이 바로 simple request와 pre flight request이다.
simple request가 사용되는 경우
- GET, HEAD, POST 요청
- 사용자 헤더가 없어야 한다.
- 헤더에서 Content-type이 text/plain, multipart/form-data, application/x-www-form-urlencoded 여야 한다.
pre-flight request는
- 옵션 메서드를 통해서 크로스 오리진으로부터 정보를 받아올 수 있는지 없는지 미리 요청을 한다.
- 실제 요청이 안전한지 서버가 미리 파악할 수 있도록 하는 수단이다.
- 실질적인 요청 전 옵션 메서드를 통해 발생한다.
- 모든 크로스 오리진 요청이 preflight request 를 발생시키는 것은 아니다. (simple request는 아님)
해결 방법
요청을 주는 쪽의 request 헤더와 요청을 받는 쪽의 response 헤더에 특정 값을 설정하면 된다.
origin 이란?
ip주소같은것
XSS (Cross Site Scripting)
클라이언트가 서버를 신뢰하기 때문에 발생하는 이슈
보안이 약한 웹 어플리케이션에 대한 웹 기반 공격
공격의 희생자는 어플리케이션이 아닌 user이다.
해로운 컨텐츠가 javascript를 활용하여 전달이 되는 것이다.
정상적인 웹 앱에 악성 스크립트를 주입하는 공격이다.
현대 브라우저의 경우 보통 xss 공격에 대한 기본적인 방어는 마련해두고 있다.
input 태그 등 클라이언트에 대한 입력을 통해 발생하는 경우가 많으므로 스크립트를 일반 문자열로 변환하는 필터 장치를 마련하여 예방할 수 있다.
CSRF (Cross-Site Request Forgery)
서버가 클라이언트를 신뢰해서 발생하는 이슈
서버는 인증정보를 가지고 오면 믿는다.
해커가 피싱 페이지에 접속한 피해자의 인증정보를 가로채 공격하는 방법
'concept > server' 카테고리의 다른 글
Server & Node 알고 넘어가야 할 요점 정리 (0) 2020.06.11 Web Architectures 정리 (0) 2020.06.10 node.js (0) 2020.05.25 브라우저, 서버, API, HTTP, Ajax 개념 정리 (0) 2020.05.24 node.js / NVM / NPM (1) 2020.04.30