인생이 쓰다!인생쓰

개발/Server

HTTP Content-Security-Policy 보안 컨텐츠 정책 설정 - 취약점 검사

Johnal 2024. 11. 15. 16:45
반응형

 

 

취약점 맴매

 

 

안녕하세요. 인생씁니다.

오늘은 보안 취약점 으로 찾아 왔습니다. 

프로젝트를 진행하고 완료 후 취약점 검사를 진행해보면 생각보다 놓친 부분들이 많습니다.

구멍이 슝슝 뚤린 채로 오픈을 하면 안되기 때문에 오늘도 취약점을 막아봅시다.

 


 

 

HTTP Content-Security-Policy (CSP)

일단 첫번째는 Content-Security-Policy입니다.

웹 보안을 강화하기 위해 HTTP 응답 헤더에서 설정하는 보안 정책입니다. 특정 유형의 보안 위협의 위험을 방지하거나 최소화하는 데 도움이 되는 기능으로써 웹 페이지에서 허용된 콘텐츠의 출처를 지정하여, 악성 스크립트의 실행을 방지하고 데이터 주입 공격(특히 XSS, Cross-Site Scripting)을 차단하는 데 도움을 줍니다.

 

CSP는 여러 지시어로 구성되어 있으며 각 지시어는 특정 유형의 리소스(스크립트, 이미지, 스타일 등)을 제어합니다. 

 

-지시어-

 

1. default-src

 - 모든 리소스 유형에 대한 기본 출처를 지정합니다.

 - 다른 지시어가 설정되지 않은 경우 적용됩니다.

 

 

 

2. script-src

 - JavaScript와 관련된 리소스의 허용 출처를 지정합니다.

 

3. style-src

- 스타일시트(CSS) 리소스의 허용 출처를 지정합니다.

 

4. img-src

- 이미지의 허용 출처를 지정합니다.

 

5. connect-src

- AJAX 요청, WebSocket 연결, Fetch API 호출 등의 출처를 지정합니다.

 

6. font-src

-  웹 폰트의 허용 출처를 지정합니다.

 

7. frame-src

- <iframe>이나 <frame>에 로드할 콘텐츠의 출처를 지정합니다.

 

8. media-src

- 오디오 및 비디오 콘텐츠의 허용 출처를 지정합니다.

 

9. object-src

- 플러그인 콘텐츠(예: Flash, Java Applet 등)의 허용 출처를 지정합니다.

 

10. worker-src

- Web Workers 및 Service Workers의 허용 출처를 지정합니다.


 

-출처-

 

 

1. self

 - 현재 도메인에서만 리소스를 로드할 수 있게 합니다.

 

2. none

 - 해당 리소스를 전혀 허용하지 않습니다.

 

3. unsafe-inline -  * 보안상 위험하므로 사용 시 주의가 필요합니다.

 - 인라인 스크립트나 스타일(HTML 태그 내에서 직접 정의된 스크립트 또는 스타일)을 허용합니다.

 

4. unsafe-eval -  * 보안상 위험하므로 사용 시 주의가 필요합니다.

- JavaScript의 eval() 함수나 new Function()과 같은 기능을 허용합니다.

 

5. url

- 특정 URL을 허용하여, 해당 URL에서 제공하는 리소스만 로드할 수 있습니다.

 

6. *(와일드카드) - * 보안상 위험하므로 사용 시 주의가 필요합니다.

- 모든 출처에서 리소스를 로드하도록 허용합니다.

 

7. data:

- URI 스키마로 지정된 인라인 데이터를 허용합니다.

 

8. https/http

- HTTPS 또는 HTTP 프로토콜을 통해 제공되는 모든 출처를 허용합니다.

 


 

 

 

<IfModule headers_module>
    Header always append Content-Security-Policy "default-src 'self';"
</IfModule>

 

이렇게 서버 설정부분에 정책에 지시어와 출처를 작성하게 된다면 

웹 페이지가 외부에서 온 리소스(예: 이미지, 스크립트, 스타일, AJAX 요청 등)를 로드하지 못하게 제한합니다.

오직 현재 웹 사이트와 동일한 출처에서 로드된 리소스만 허용됩니다. 

홈페이지를 만들고 쓰다 보면 외부 스크립트나 폰트 , 이미지 등 외부사이트에서 가져오는 경우들이 있는데 

csp정책에 맞게 그런 부분들만 추가적으로 작성해주시고 기본적으로는 저 설정을 가져가는게 좋습니다.ㅎㅎ

 


비메오 CSP 설정
Header set Content-Security-Policy 
"script-src 'self' https://player.vimeo.com ;
frame-src 'self' https://player.vimeo.com; 
style-src 'unsafe-inline' 'self' https://player.vimeo.com ;
object-src 'self' https://player.vimeo.com; 
default-src 'self';img-src 'self' https://player.vimeo.com https://i.vimeocdn.com "

 

 

 

얼마전에는 비메오 영상을 허용해주려고 하다보니까 이렇게 많이 참조 하고 설정하게 되더라구요.

많은 도움이 되셨으면 좋겠습니다.

감사합니다.

 

 

 

 

 

728x90
반응형

'개발 > Server' 카테고리의 다른 글

Crontab 설정  (0) 2024.11.16
쿠키 Secure , HttpOnly 속성 누락 - 취약점 검사  (1) 2024.11.09
쿠키 SameSite 속성 누락 - 취약점 검사  (4) 2024.11.07