nextjs/no-unwanted-polyfillio 正确性
它的作用
防止使用不安全的 polyfill.io 域名以及重复的 polyfill。
为什么这是个问题?
安全风险:cdn.polyfill.io 和 polyfill.io 这两个域名在 2024 年遭受了供应链攻击,被恶意行为者获取并开始向网站注入有害代码。超过 38 万个网站受到影响。这些域名在任何情况下都不应使用。
性能问题:
对于安全的替代方案(如 cdnjs.cloudflare.com/polyfill/),如果包含已由 Next.js 自带的 polyfill,会不必要地增加页面体积,从而影响加载性能。
示例
此规则的 错误 用法示例:
javascript
// 安全风险 - 已被攻陷的域名
<script src='https://cdn.polyfill.io/v2/polyfill.min.js'></script>
<script src='https://polyfill.io/v3/polyfill.min.js'></script>
// 重复的 polyfill
<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