CSP header - nowol79/knowledge_base GitHub Wiki

  • 사용목적 : 특정 웹페이지에서 주어진 정책에 어긋난 리소스들을 리포팅 받아 볼 수 있다.

  • 사용방법

    • 서버 응답 header에 Content-Security-Policy-Report-Only 속성 추가
    • 브라우져가 지정된 directive에 어긋난 경우 POST method로 리포팅을 해 준다. CSP
  • 사용예제

    • inline 스크립트를 허용하기 않기 위해서 'safe-inline' directive 추가해 보자.

      <?php
      header("Content-Security-Policy-Report-Only: default-src data: 'safe-inline'; report-uri http://report.com:20000/");
      ?>
      <script>alert('Hello, world.');</script>
    * report.com:20000 서버에서 응답을 기다리면...아래와 같이 Chrome 브라우저에서 POST 함수를 통해 리포팅 데이터를 전달해 준다. 
    
    

    $ nc -l 20000 POST / HTTP/1.1 Host: report.com:20000 Connection: keep-alive Content-Length: 314 Origin: http://report.com:20070 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36 Content-Type: application/csp-report Accept: / Referer: http://report.com:20070/csp_example.php Accept-Encoding: gzip, deflate Accept-Language: ko-KR,ko;q=0.8,en-US;q=0.6,en;q=0.4,ja;q=0.2

    {"csp-report":{"document-uri":"http://report.com:20070/csp_example.php","referrer":"","violated-directive":"default-src data: 'safe-inline'","effective-directive":"script-src","original-policy":"default-src data: 'safe-inline'; report-uri http://report.com:20000/","blocked-uri":"","status-code":200}}

⚠️ **GitHub.com Fallback** ⚠️