[wp]CORS対策で見直すべき点

結構キツいよ

Cross-Domain JavaScript Source File Inclusion

よそのドメインからjsとかを引っ張ってきてる場合に起きる。

integrityとかcrossoriginとかを入れておけば大丈夫。基本的に、CDN関係はこのあたりもカバーしてくれてる。

<script src="https://code.jquery.com/jquery-3.7.0.js" integrity="sha256-JlqSTELeR4TLqP0OG9dxM7yDPqX1ox/HfgiSLBj8+kM=" crossorigin="anonymous"></script>

CDNの見直し

要素を足したり、無かったら別のCDNサービスを使ったり、DLできるなら自鯖に上げたり。

これについてはこの記事。

プラグインが干渉するケース

cdnを見直しても警告が残っている場合、プラグインも見直しが必要になる。

現在、こちらで確認できたのは以下のもの。

reCAPTCHA

ContactForm7のインテグレーションから追加。

削除したら消えたけど使いたい場合どうするんでしょうね。

AddToAny Share Buttons

ページのソースコードを覗いたら外部からjsを引っ張ってた。

ぶっちゃけシェアボタンは自作できるし削除。

Mathjax-Latex

数式を書くためのmathjax.jsをwpプラグインにしたやつ。有効化するとこんな感じでページ下部に記載されてる。

<script type='text/javascript' src='https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.9/MathJax.js?config=default&ver=1.3.12' id='mathjax-js'></script>

つまり、cdnから引っ張ってるのだけどintegrityが入ってない。cloudflareにいって確認するとこうなってる。

<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.9/MathJax.js" integrity="sha512-M36RUChWzAh1veeenRZFql7HydLEnkYmoloiCvVrhz402UZgKI93qkV7SsaxtVKdN95Wzajh39ysrXCq34NTsg==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>

足りない部分を足すならこう。

//mathjax
add_filter('script_loader_tag', 'custom_script_loader_tag', 10, 2);
function custom_script_loader_tag($tag, $handle) {
    if($handle == 'mathjax') {
        return str_replace('></script>', ' defer integrity="sha512-M36RUChWzAh1veeenRZFql7HydLEnkYmoloiCvVrhz402UZgKI93qkV7SsaxtVKdN95Wzajh39ysrXCq34NTsg==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>', $tag);
    }else{
        return $tag;
    }
}

もしくはプラグイン内の設定でCDNを使わずに任意のパスを指定する。

プラグインでのバージョンが2.7.9、さっぱり更新されてない。現状の最新が3.2.2で4αも出てる。使えてるからこのままでもいいけど、導入するならプラグインじゃなくて自分で組み込んだほうがいいかもしれない。一応投稿画面で多少楽になるメリットはあるので人によるけど。

まとめ

個別事案になってくるので「これを加えたら正解」がないっぽい。

オープン前とかアクセスが少ないうちはいいんだけど、運用中に調査する場合は直接手を入れてなにかあるとまずいので、クローンサイトを作るとかで頑張りましょう。

コメント

タイトルとURLをコピーしました