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