programing tip

스크립트 및 스타일 요소에 대한 HTML "nonce"속성의 목적은 무엇입니까?

itbloger 2020. 9. 10. 07:29
반응형

스크립트 및 스타일 요소에 대한 HTML "nonce"속성의 목적은 무엇입니까?


W3C가있다라는 HTML5.1에 새로운 속성 말한다 nonce에 대한이 stylescript그이 웹 사이트의 콘텐츠 보안 정책을 사용할 수 있습니다.

나는 그것에 대해 봤지만 마침내이 속성이 실제로 무엇을하고 그것을 사용할 때 어떤 변화가 있는지 알지 못했습니다.


nonce속성을 사용하면 CSP 지시문 ( 모든 인라인 /을 허용 함)의 사용을 피하면서 특정 인라인 scriptstyle요소 를 "허용" unsafe-inline할 수 있으므로 인라인 / 일반적으로 허용하지 않는 핵심 CSP 기능을 계속 유지할 수 있습니다 .scriptstylescriptstyle

따라서 nonce속성은 특정 스크립트 또는 스타일 요소의 인라인 콘텐츠가 일부 (악의적 인) 제 3 자에 의해 문서에 삽입되지 않고 대신 문서가 제공되는 서버를 제어하는 ​​사람이 의도적으로 문서에 넣었다는 것을 브라우저에 알리는 방법입니다. 에서.

https://developers.google.com/web/fundamentals/security/csp/#if_you_absolutely_must_use_itnonce속성 을 사용하는 방법에 대한 좋은 예 를 제공하며, 다음 단계로 내려갑니다.

  1. 웹 서버가 특정 문서에 대해 수신하는 모든 요청에 ​​대해 백엔드가 암호화 보안 난수 생성기에서 최소 128 비트 데이터의 임의 base64 인코딩 문자열을 생성하도록합니다. 예 : EDNnf03nceIOfn39fn3e9h3sdfa. 그것은 당신의 임시 값입니다.

  2. 1 단계에서 생성 된 nonce를 가져 와서 인라인 script/ style"화이트리스트"를 원하는 경우 백엔드 코드 nonce가 해당 nonce를 값으로 사용하여 문서를 전송하기 전에 문서에 속성을 삽입하도록 합니다.

    <script nonce="EDNnf03nceIOfn39fn3e9h3sdfa">…</script>
    
  3. 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.

참고 URL : https://stackoverflow.com/questions/42922784/what-s-the-purpose-of-the-html-nonce-attribute-for-script-and-style-elements

반응형