이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 32621|회답: 2

[보안 취약점] "Content-Security-Policy" 헤더에 누락되거나 보안이 취약하지 않은 취약점

[링크 복사]
게시됨 2021. 6. 11. 오전 10:36:39 | | | |
HTTP 응답 헤더 Content-Security-Policy 덕분에 사이트는 사용자 에이전트가 특정 페이지에 대해 어떤 자원을 로드할지 제어할 수 있습니다. 특별한 경우를 제외하고, 정책 세트는 주로 서버의 소스 및 스크립트 종료점을 지정하는 데 집중됩니다. 이는 사이트 간 스크립팅 공격을 막는 데 도움이 됩니다

문서조사:하이퍼링크 로그인이 보입니다.

이 글은 W3C의 콘텐츠 보안 정책(Content Security Policy, 줄여서 CSP)을 설명합니다. 이름에서 알 수 있듯이, 이 명세는 콘텐츠 보안과 관련이 있으며, 주로 페이지가 로드할 수 있는 자원을 정의하고 XSS의 발생을 줄이는 데 사용됩니다.

초기 크롬은 X-WebKit-CSP 응답 헤더를 통해 CSP를 지원했고, 파이어폭스와 IE는 X-Content-Security-Policy를, Chrome25와 Firefox23은 표준 Content-Security-Policy를 지원하기 시작했습니다.

사용자 이름, 비밀번호, 기기 이름 및/또는 민감한 파일 위치와 같은 웹 애플리케이션에 관한 민감한 정보가 수집될 수 있습니다
초보자는 사용자 이름, 비밀번호, 신용카드 번호, 사회보장번호 등 민감한 정보를 제공하도록 설득될 수 있습니다


먼저, MVC ASP.NET 새 프로젝트를 만들고, 새로운 js 스크립트를 만들고, 다음과 같이 바이두 통계의 js 코드를 동적으로 불러오자:




위 그림에서 보듯, 제3자 JS에 악성 코드(예: 쿠키 훔치기, 콘텐츠 변경, 링크 점프 등)가 포함되어 있다면 JS 스크립트 코드가 성공적으로 도입된 것을 확인할 수 있습니다.

보안이 취약한 서드파티 JS 스크립트의 도입을 어떻게 막을 수 있을까요?

우회 방법

응답 헤드"콘텐츠-보안-정책" 추가하세요.예를 들어:

Content-Security-Policy: default-src 'self' 하이퍼링크 로그인이 보입니다.;
                         connect-src '없음';
Content-Security-Policy: connect-src 하이퍼링크 로그인이 보입니다.
                         스크립트-SRC하이퍼링크 로그인이 보입니다.

지침
명령어 값의 예시
설명
기본값-SRC
'자기' cnd.a.com
모든 유형의 리소스(JS, IMAGE, CSS, WEB FONT, AJAX REQUESTS, IFRAMES, MULTIMEDIA 등)에 대해 기본 로딩 정책을 정의하고, 별도의 정의된 정책이 없으면 특정 리소스 유형에 대해 기본값을 사용하세요.
스크립트-SRC
'자기' js.a.com
자바스크립트의 로딩 정책을 정의하세요.
스타일-SRC
'자기' css.a.com
스타일에 대한 로딩 정책을 정의하세요.
IMG-SRC
'자기' img.a.com
이미지에 대한 로딩 정책을 정의하세요.
connect-src
'자아'
Ajax, WebSockets 등에서 오는 요청에 대한 로딩 정책. 허용되지 않으면 브라우저는 상태 400의 응답을 시뮬레이션합니다.
폰트-src
font.a.com
WebFont의 로딩 정책.
객체-SRC
'자아'
<object><embed> <applet> 플래시와 같은 플러그인의 로딩 정책이 , , 또는 .
미디어-SRC
media.a.com
<audio> <video> 또는 와 같은 태그에 대해 도입된 HTML 멀티미디어의 로딩 전략.
프레임-src
'자아'
프레임 로딩 정책.
샌드박스
허용 형식
요청된 자원에 대해 샌드박스(iframe의 샌드박스 속성과 유사)를 활성화하세요.
리포트-우리
/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 HttpApplication 실행 순서
다음:인기 있는 브라우저 User-Agent 백과사전을 요약하자면
게시됨 2021. 12. 17. 오후 10:38:43 |
배우!!!!!!!!!!!!!!
게시됨 2022. 10. 18. 오후 5:16:34 |
오랫동안 찾아다녔고 조금씩 배웠습니다
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com