CSP
는 Content Security Policy의 약자로, 웹 페이지에서 허용되는 리소스의 종류와 출처를 지정하는 정책이며 CSP를 사용하면 웹 페이지에서 악성 리소스의 실행을 차단하여 보안을 강화할 수 있다.
CSP는 웹 브라우저에서 구현된다. 웹 브라우저는 웹 페이지의 CSP 정책을 확인하고, 해당 정책에 위배되는 리소스를 차단한다.
CSP는 다음과 같은 방법으로 보안을 강화한다.
- 자바스크립트 공격 차단
자바스크립트는 웹 페이지의 기능을 확장하는 데 사용되는 강력한 도구이지만, 악용될 경우 사용자의 정보를 훔치거나 시스템을 손상시킬 수 있다. CSP를 사용하면 특정 도메인에서만 자바스크립트를 실행하도록 허용하여 자바스크립트 공격을 차단할 수 있다.
- 스타일 시트 공격 차단
스타일 시트는 웹 페이지의 모양을 조정하는 데 사용되는 도구이지만, 악용될 경우 사용자의 정보를 훔치거나 시스템을 손상시킬 수 있다. CSP를 사용하면 특정 도메인에서만 스타일 시트를 로드하도록 허용하여 스타일 시트 공격을 차단할 수 있다.
- 이미지 공격 차단
이미지는 웹 페이지에 이미지를 표시하는 데 사용되는 도구이지만, 악용될 경우 사용자의 정보를 훔치거나 시스템을 손상시킬 수 있다. CSP를 사용하면 특정 도메인에서만 이미지를 로드하도록 허용하여 이미지 공격을 차단할 수 있다.
CSP는 다음과 같은 방법으로 구현할 수 있다.
- HTML 메타 태그
HTML 메타 태그를 사용하여 CSP 정책을 지정할 수 있다.
<meta http-equiv="Content-Security-Policy" content="default-src https://example.com;">
위의 예제는 모든 리소스를 https://example.com에서만 허용하는 CSP 정책을 지정한다.
- HTTP 헤더
HTTP 헤더를 사용하여 CSP 정책을 지정할 수 있다.
Content-Security-Policy: default-src https://example.com
위의 예제는 HTML 메타 태그를 사용하여 지정한 것과 동일한 CSP 정책을 지정한다.
CSP는 웹 페이지의 보안을 강화하는 데 효과적인 방법이며 CSP를 사용하면 악성 리소스의 실행을 차단하여 웹 사이트를 보호할 수 있다.
CSP (Content Security Policy) 디렉티브는 웹 페이지에서 허용하거나 제한하려는 리소스 및 동작을 정의하는 지시문이다. 디렉티브는 웹 애플리케이션에서 어떤 리소스를 로드하고 어떤 작업을 허용하는지를 제어하기 위해 사용된다.
몇가지 예시를 들어보겠다.
default-src 디렉티브:
default-src 디렉티브는 웹 페이지에 대한 기본 리소스 로딩 정책을 지정하며 이 디렉티브가 설정되지 않으면, 다른 디렉티브가 상속된다.
default-src 'self' www.example.com;
이 예제에서는 웹 페이지에서 동일 출처의 리소스 및 www.example.com 도메인의 리소스만을 로드할 수 있다.
script-src 디렉티브:
script-src 디렉티브는 스크립트 파일의 로딩을 제어하며 이 디렉티브를 사용하여 어떤 출처의 스크립트를 로드할 수 있는지를 정의한다.
script-src 'self' 'unsafe-inline' 'nonce-RANDOM-NONCE' https://cdn.example.com;
이 예제에서는 동일 출처, 무작위 nonce 값, 그리고 https://cdn.example.com 도메인에서 스크립트를 로드할 수 있다.
style-src 디렉티브:
style-src 디렉티브는 스타일 시트 파일의 로딩을 제어하며 이 디렉티브를 사용하여 어떤 출처의 스타일을 로드할 수 있는지를 정의한다.
style-src 'self' 'nonce-RANDOM-NONCE' https://fonts.example.com;
이 예제에서는 동일 출처, 무작위 nonce 값, 그리고 https://fonts.example.com 도메인에서 스타일 시트를 로드할 수 있다.
img-src 디렉티브:
img-src 디렉티브는 이미지 리소스의 로딩을 제어하며 이 디렉티브를 사용하여 어떤 출처의 이미지를 로드할 수 있는지를 정의한다
img-src 'self' data: https://images.example.com;
이 예제에서는 동일 출처, 데이터 URI, 그리고 https://images.example.com 도메인에서 이미지를 로드할 수 있다.
connect-src 디렉티브:
connect-src 디렉티브는 원격 서버와의 연결을 제어하며 이 디렉티브를 사용하여 어떤 출처의 서버와 통신할 수 있는지를 정의한다.
connect-src 'self' api.example.com;
이 예제에서는 동일 출처 및 api.example.com 도메인과의 연결만 허용된다.

'보안' 카테고리의 다른 글
OAuth 인증이 취약한 이유 (0) | 2024.01.29 |
---|---|
char() , varchar()-- char() 취약점 (0) | 2023.11.06 |
UTM ? 알아볼게요 (0) | 2023.10.21 |
ELK 무엇인가 ? (0) | 2023.10.11 |
사이드 채널 공격은 무엇인가 ? (0) | 2023.09.22 |