架构师_程序员_码农网

사용자 이름 비밀번호 검색
등록하기

QQ登录

시작하기 위한 한 단계

검색
架构师_程序员_码农网 " 架构师 ' 其他技术&기타 기술 ' 보안 및 방어 ' "콘텐츠-보안-정책" 헤더가 없거나 안전하지 않은 취약점 ...
조회:19343|댓글: 2
打印 上一主题 下一主题

[ 보안 취약점]누락되거나 안전하지 않은 "콘텐츠-보안-정책" 헤더 취약점

[복사 링크]
바로 가기 跳转到指定楼层
owner
2021-6-11 10:36:39 게시됨| 해당 작성자만 보기回帖奖励 | 역방향찾아보기| 읽기 모드
HTTP 응답 헤더 Content-Security-Policy를 사용하면 사이트에서 특정 페이지에 대해 사용자 에이전트가 로드하는 리소스를 제어할 수 있습니다. 특별한 경우를 제외하고 이 정책 세트에는 주로 서버의 소스 및 스크립트 엔드포인트를 지정하는 것이 포함됩니다. 이렇게 하면 사이트 간 스크립트 공격(크로스 사이트 스크립트)을 차단하는 데 도움이 됩니다.

문서: https: //developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Content-Security-Policy

이 문서는 W3C의 콘텐츠 보안 정책(줄여서 CSP)에 관한 문서입니다. 이름에서 알 수 있듯이 이 사양은 콘텐츠 보안과 관련이 있으며 주로 XSS 발생을 줄이기 위해 페이지에 로드할 수 있는 리소스를 정의하는 데 사용됩니다.

초기 Chrome은 X-WebKit-CSP 응답 헤더를 통해 CSP를 지원했고, Firefox와 IE는 X-Content-Security-Policy를 지원했으며, Chrome25와 Firefox23은 표준 Content-Security-Policy를 지원하기 시작했습니다.

사용자 이름, 비밀번호, 컴퓨터 이름 및/또는 민감한 파일 위치와 같은 웹 애플리케이션에 대한 민감한 정보를 수집할 수 있습니다.
사용자 이름, 비밀번호, 신용카드 번호, 주민등록번호 등과 같은 민감한 정보를 제공하도록 주 사용자를 설득할 수 있습니다.


먼저 다음과 같이 Baidu Statistics js 코드를 동적으로 로드하기 위해 새로운 js 스크립트가 포함된 새 ASP.NET MVC 프로젝트를 생성합니다:




위와 같이 써드파티(바이두)의 JS 스크립트 코드가 성공적으로 도입된 것을 확인할 수 있습니다. 써드파티 JS에 쿠키 탈취, 콘텐츠 수정, 링크 점프 등과 같은 악성 코드가 있다고 가정해 보겠습니다.

안전하지 않은 타사 js 스크립트의 도입을 차단하는 방법은 무엇인가요?

솔루션

응답 헤더에 "Content-Security-Policy"를 추가합니다( 예시는 아래와 같습니다):

Content-Security-Policy: default-src 'self' http://example.com;
connect-src 'none';
Content-Security-Policy: connect-src http://example.com/; script-src http://example.com/;
script-src http://example.com/

지시어
명령어 값 예시
설명
default-src
'self' cnd.a.com
모든 유형의 리소스(js, 이미지, css, 웹폰트, 아약스 요청, iframe, 멀티미디어 등)에 대한 기본 로드 정책을 정의하며, 특정 유형의 리소스에 대한 별도의 정책이 없는 경우 기본값을 사용합니다.
스크립트-src
'self' js.
JavaScript에 대한 로딩 정책을 정의합니다.
style-src
'self' css.a.com
스타일에 대한 로딩 정책을 정의합니다.
img-src
'self' img.a.com
이미지에 대한 로딩 정책을 정의합니다.
connect-src
'self'
Ajax, WebSocket 등의 요청에 대한 로드 정책을 정의합니다. 허용되지 않으면 브라우저는 400 상태의 응답을 시뮬레이션합니다.
font-src
font.a.com
웹폰트에 대한 로드 정책.
object-src
'self'
<객체>, <임베드> 또는 <앱렛>과 같은 태그에 의해 도입된 플래시와 같은 플러그인에 대한 로드 정책.
media-src
media.a.com
<오디오> 또는 <비디오>와 같은 태그에 의해 도입된 HTML 멀티미디어에 대한 로드 정책입니다.
frame-src
'self'
프레임에 대한 로딩 정책입니다.
sandbox
allow-forms
요청된 리소스에 대해 샌드박스를 활성화합니다(iframe의 샌드박스 속성과 유사).
report-uri
/report-uri
요청된 리소스가 정책에 의해 허용되지 않는 경우 로그 메시지를 제출할 위치를 브라우저에 알려줍니다. 특별: 브라우저에서 콘텐츠는 차단하지 않고 로그만 보고하도록 하려면 Content-Security-Policy-Report-Only 헤더를 대신 사용할 수 있습니다.

다음과 같이 프로젝트의 web.config 파일을 수정하여 사용자 지정 응답 헤더를 추가해 보겠습니다:

아래와 같이 프로젝트를 다시 실행합니다:



브라우저가 타사 js 스크립트의 로딩을 성공적으로 차단했습니다:

다음 콘텐츠 보안을 위반하므로 'https://hm.baidu.com/hm.js?6dbaac17dfeb2840b5b09d2dff6d2319' 스크립트 로드를 거부했습니다. 정책 지시어: "script-src 'self' http://localhost:56888/ ". 'script-src-elem'이 명시적으로 설정되지 않았으므로 'script-src'가 대체로 사용됩니다.
(끝)




이전 기사:ASP.NET MVC Http애플리케이션 실행 순서
다음 글:현재 인기 있는 브라우저 사용자-에이전트 컴파일 요약
收藏转播分享즐겨찾기1 재방송
코드 파머, 연습 과정에서만 게시 된 기술적 인 어려움이 발생했으며 다른 사람들을 오도하지 마십시오.
sigeshitou1987
2021-12-17 22:38:43에 게시됨| 해당 작성자만 보기
!!!!!!!!!!!!!!!!
코드 파머 네트워크는 연습 과정에서만 게시되었으며 기술적 인 어려움이 발생했으며 다른 사람들을 오도하지 마십시오.
벤치
게시됨 2022-10-18 17:16:34| 해당 작성자만 보기
나는 오랫동안 배우기 위해 찾고 있었다.
코드 파머 네트워크는 연습 과정에서 기술적 인 어려움에 직면했을 뿐이며 다른 사람들을 오도하지 마십시오.
로그인해야 다시 게시할 수 있습니다 로그인하기 | 등록하기

이 버전의 통합 규칙 댓글 달기


면책 조항: 코드파머에서 제공하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용하도록 제한되며, 위 내용을 상업적 또는 불법적인 목적으로 사용할 경우 모든 결과는 사용자 본인이 부담해야 합니다. 네트워크에서 제공하는 사이트 정보, 저작권 분쟁은 본 사이트와 무관합니다. 다운로드 후 24시간 이내에 컴퓨터에서 위의 콘텐츠를 완전히 삭제해야 합니다. 프로그램이 마음에 들면 정품 소프트웨어를 지원하고 등록을 구입하여 더 나은 정품 서비스를 받으십시오. 침해가 있는 경우 이메일로 연락하여 처리해 주시기 바랍니다.

메일 To:help@itsvse.com

QQ| ( 鲁ICP备14021824号-2)|사이트맵

GMT+8, 2024-9-19 01:40

빠른 답글맨 위로 돌아가기목록으로 돌아가기