관리 메뉴

제뉴어리의 모든것

csp, csrf, cors 대하여 본문

웹 지식

csp, csrf, cors 대하여

제뉴어리맨 2024. 3. 26. 17:54

csp (contents-security-policy) 컨텐츠 보안 정책 

script는 특정한 사이트에서만 받고, object 태그에서 사용되는 src는 특정 사이트에서만 받아라 등, 컨텐츠를 받을 수 있는 도메인 정보를 말한다. (서버에서 클라이어트에게 보내는 응답의 헤더에 넣어 줌)
ex) script-src 'self'; object-src https://trustedplugins.example.com; report-uri /csp-report-endpoint/
self는 자기 자신 도메인을 말한다.

 

csrf (Cross-Site Request Forgery) 사이트간 요청 위조 

사이트간 발생할 수 있는 공격을 말한다.
사용자가 공격자로부터 받은 이메이 안에 특정 컨텐츠를 눌렀는데, 해당 컨텐츠의 액션이 특정 은행 사이트의 내 계좌에서 출금을 하는 api를 호출한다거나 하는 공격을 말한다.
그리고 spring security 사용시 해당 보안정책을 disabled 하는 이유는, 주로 restAPI 호출을 담당하는 CSR 환경에서는 요청을 받는 백엔드 서버의 도메인과 브라우저상의 페이지가 보여지는 클라이언트의 도메인이 다르기 때문에 애초에 필요가 없다.

 

cors (Cross-Origin Resource Sharing) 교차 출처 리소스 공유 

서로 다른 도메인간의 리소스 공유 예외적으로 혹은 전부 허용해 주는 것을 말한다.
즉, 웹사이트 A에서 이번에 로드될 페이지의 게시글에 포함된 동영상의 출처인 웹사이트 B로 요청을 보낸다.
이때, 브라우저는 B로 보내는 요청의 헤더에 Access-Control-Allow-Origin 를 추가하여 보낸다. (당신의 사이트에서 접근이 가능한 도메인은 무엇인가요?라고 묻는 것)
B사이트는 A사이트가 보낸 요청의 응답의 헤더에 Access-Control-Allow-Origin 의 값을 보내서, 어떤 도메인이 접근 가능한지 혹은 전부(*) 가능한지 알려 줌.
해당 응답을 받은 브라우저가 Access-Control-Allow-Origin 를 확인하여 A사이트가 해당되지 않는다면 에러 발생.