Skip to content
← Back to rules

nextjs/no-unwanted-polyfillio Correctness

作用

阻止使用不安全的 polyfill.io 域名以及重复的 polyfill。

为什么这不好?

安全风险: 域名 cdn.polyfill.iopolyfill.io 在 2024 年的一次供应链攻击中被攻破, 该域名被恶意行为者收购,并开始向网站注入有害代码。 超过 380,000 个网站受到了影响。无论在任何情况下都不应使用这些域名。

性能问题: 对于像 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>

如何使用

To enable this rule using the config file or in the CLI, you can use:

json
{
  "plugins": ["nextjs"],
  "rules": {
    "nextjs/no-unwanted-polyfillio": "error"
  }
}
ts
import { defineConfig } from "oxlint";

export default defineConfig({
  plugins: ["nextjs"],
  rules: {
    "nextjs/no-unwanted-polyfillio": "error",
  },
});
bash
oxlint --deny nextjs/no-unwanted-polyfillio --nextjs-plugin

版本

此规则于 v0.2.7 中添加。

参考资料