之前介紹過 CSP 1.0 時,有提到目前部分瀏覽器有支援 CSP 2.0 支援度如下圖: 在 CSP level2 新增了部分的 directives 及屬性(如 web worker 針對 外部資源載入的 child-src) ,更多關於 CSP level2 的詳細內容. 這篇僅介紹 CSP level2 針對 inline 程式碼所規範的 hash 與 nonce,讓 inline 程式碼能較安全且彈性的執行. 我們先來看一個普通的 CSP demo 頁面 header(“Content-Security-Policy: script-src *;”); print “<h1>CSP demo</h1> <script src=’https://code.jquery.com/jquery-3.2.1.slim.min.js’></script> <script>     var my_script = document.createElement(‘script’);     my_script.setAttribute(‘src’,’https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore.js’);     document.head.appendChild(my_script); </script>”; 實際執行的畫面: 可以看到設置了 CSP script-src * ,預設還是會擋掉 inline script ,在錯誤的訊息中,透露出可以設定 unsafe-inline, hash 及 nonce 來解決這個問題. […]