Add custom CSP Fork

  • /*
     * @title Add custom CSP
     * @description お好みの Content-Security-Policy を追加して、制限を厳しくしてみよう
     * @include http://*
     * @include https://*
     * @license MIT License
     * @javascript_url
     */
    
    /*
     ポリシーは後から追加することで厳しくはできても、緩くはできない。
     https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy#Multiple_content_security_policies
     既存のmetaタグを削除・変更しても消えないし、リロード後のDOMツリーにmetaタグを残しておかなくとも残る。
     また、XHRやinnerHTMLでDOMツリーを構築するときも既存のポリシーの影響を受ける。
    
     頭にlocation.reload() を挟めば"元の"ポリシーに戻してから処理することはできるが、
     余計なリクエストが一つ増えるし、このスクリプトではやらないことにする。手動でどうぞ。
    */
    
    (function() {
      let csp = doc.createElement("meta");
      csp.httpEquiv = "Content-Security-Policy";
      csp.content = prompt("Enter policy:", "default-src 'self'") || '';
      document.head.appendChild(csp);
    
      // 設定したポリシーを反映するために再読み込み
      let xhr = new XMLHttpRequest();
      xhr.open("GET", location.href);
      xhr.responseType = "document";
      xhr.onload = function() {
        let doc = xhr.response;
        document.replaceChild(doc.documentElement, document.documentElement);
      };
      xhr.send();
    })();
  • Permalink
    このページへの個別リンクです。
    RAW
    書かれたコードへの直接のリンクです。
    Packed
    文字列が圧縮された書かれたコードへのリンクです。
    Userscript
    Greasemonkey 等で利用する場合の .user.js へのリンクです。
    Loader
    @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
    Metadata
    コード中にコメントで @xxx と書かれたメタデータの JSON です。