Skip to content
← Back to rules

nextjs/no-unwanted-polyfillio 正しさ

何を行うか

安全でない polyfill.io ドメインの使用と重複したポリフィルの使用を防止します。

なぜこれは問題なのか

セキュリティリスク: 2024年に発生したサプライチェーン攻撃において、cdn.polyfill.io および polyfill.io ドメインが悪意ある当事者に乗っ取られ、サイトに有害なコードを注入し始めた。これにより38万以上ものウェブサイトが影響を受けた。これらのドメインはいかなる状況下でも使用すべきではない。

パフォーマンス上の問題:cdnjs.cloudflare.com/polyfill/ のような安全な代替手段を使用する場合、Next.js で既に配信されているポリフィルを無駄に含めることでページサイズが増加し、読み込みパフォーマンスに悪影響を与える可能性がある。

このルールに対して不適切なコードの例:

javascript
// セキュリティリスク - 乗っ取られたドメイン
<script src='https://cdn.polyfill.io/v2/polyfill.min.js'></script>
<script src='https://polyfill.io/v3/polyfill.min.js'></script>

// 重複したポリフィル
<script src='https://cdnjs.cloudflare.com/polyfill/v3/polyfill.min.js?features=Array.prototype.copyWithin'></script>
<script src='https://cdnjs.cloudflare.com/polyfill/v3/polyfill.min.js?features=WeakSet%2CPromise'></script>

使い方

このルールを設定ファイルまたは CLI で有効化するには、次のようにします:

json
{
  "plugins": ["nextjs"],
  "rules": {
    "nextjs/no-unwanted-polyfillio": "error"
  }
}
bash
oxlint --deny nextjs/no-unwanted-polyfillio --nextjs-plugin

参照