스크립트 및 스타일 요소에 대한 HTML "nonce"속성의 목적은 무엇입니까?
W3C가있다라는 HTML5.1에 새로운 속성 말한다 nonce
에 대한이 style
와 script
그이 웹 사이트의 콘텐츠 보안 정책을 사용할 수 있습니다.
나는 그것에 대해 봤지만 마침내이 속성이 실제로 무엇을하고 그것을 사용할 때 어떤 변화가 있는지 알지 못했습니다.
이 nonce
속성을 사용하면 CSP 지시문 ( 모든 인라인 /을 허용 함)의 사용을 피하면서 특정 인라인 script
및 style
요소 를 "허용" unsafe-inline
할 수 있으므로 인라인 / 일반적으로 허용하지 않는 핵심 CSP 기능을 계속 유지할 수 있습니다 .script
style
script
style
따라서 nonce
속성은 특정 스크립트 또는 스타일 요소의 인라인 콘텐츠가 일부 (악의적 인) 제 3 자에 의해 문서에 삽입되지 않고 대신 문서가 제공되는 서버를 제어하는 사람이 의도적으로 문서에 넣었다는 것을 브라우저에 알리는 방법입니다. 에서.
https://developers.google.com/web/fundamentals/security/csp/#if_you_absolutely_must_use_it 는 nonce
속성 을 사용하는 방법에 대한 좋은 예 를 제공하며, 다음 단계로 내려갑니다.
웹 서버가 특정 문서에 대해 수신하는 모든 요청에 대해 백엔드가 암호화 보안 난수 생성기에서 최소 128 비트 데이터의 임의 base64 인코딩 문자열을 생성하도록합니다. 예 :
EDNnf03nceIOfn39fn3e9h3sdfa
. 그것은 당신의 임시 값입니다.1 단계에서 생성 된 nonce를 가져 와서 인라인
script
/style
"화이트리스트"를 원하는 경우 백엔드 코드nonce
가 해당 nonce를 값으로 사용하여 문서를 전송하기 전에 문서에 속성을 삽입하도록 합니다.<script nonce="EDNnf03nceIOfn39fn3e9h3sdfa">…</script>
1 단계에서 생성 된 임시 값을 가져 와서 앞에 추가
nonce-
하고 백엔드가script-src
또는 에 대한 소스 목록의 값 중에서 CSP 헤더를 생성하도록합니다style-src
.Content-Security-Policy: script-src 'nonce-EDNnf03nceIOfn39fn3e9h3sdfa'
따라서 nonce를 사용하는 메커니즘은 대신 백엔드가 인라인 콘텐츠의 해시를 생성 script
하거나 style
허용하려는 다음 CSP 헤더의 적절한 소스 목록에 해당 해시를 지정하는 대신 사용할 수 있습니다.
브라우저는 nonce 값이 페이지 요청 사이에 변경 사항을 전송했는지 확인할 수 없기 때문에 (전적으로 바람직하지 않지만) 위의 1을 건너 뛰고 백엔드가 nonce에 대해 어떤 작업도 동적으로 수행하지 않도록 할 수 있습니다. 그냥 둘 수 있었다 nonce
당신의 문서의 HTML 소스에 정적 값 속성을, 그 같은 넌스 값을 정적 CSP 헤더를 보냅니다.
하지만 이런 식으로 정적 임시 값을 사용하지 않으려는 이유는 처음부터 임시 값을 사용하는 전체 목적을 거의 무효화하기 때문입니다. 왜냐하면 이와 같은 정적 임시 값을 사용한다면, 그 시점에서 당신은 그냥 unsafe-inline
.
'programing tip' 카테고리의 다른 글
libcurl을 사용하는 HTTP 상태 코드? (0) | 2020.09.10 |
---|---|
Map.clear () vs new Map : 어느 것이 더 좋을까요? (0) | 2020.09.10 |
내 컴퓨터에서 fuslogvw.exe를 찾을 수 없습니다. (0) | 2020.09.10 |
Moq 콜백을 이해하도록 도와 주시겠습니까? (0) | 2020.09.10 |
경고 : Aqua Data Studio의 집계 또는 기타 SET 작업에 의해 Null 값이 제거되었습니다. (0) | 2020.09.10 |