该配置由 Modern.js Builder 提供,更多信息可参考 security.sri。
type SRIOptions =
| {
hashFuncNames?: string[];
enabled?: 'auto' | boolean;
hashLoading?: 'eager' | 'lazy';
}
| boolean;
undefined
仅支持 webpack
为 HTML 所引入的子资源添加完整性属性 —— integrity
,使浏览器能够验证引入资源的完整性,以此防止下载的资源被篡改。
启动该选项后会将 webpack 的 output.crossOriginLoading 配置项设置为 anonymous
。
子资源完整性 Subresource Integrity(SRI)是专门用来校验资源的一种方案,它读取资源标签中的 integrity 属性,将其中的信息摘要值,和资源实际的信息摘要值进行对比,如果发现无法匹配,那么浏览器就会拒绝执行资源。
对于 script 标签来说,结果为拒绝执行其中的代码;对于 CSS link 来说,结果为不加载其中的样式。
关于 SRI 的更多内容,可以查看 Subresource Integrity - MDN。
默认情况下,不会开启 SRI
,当开启之后它的默认配置如下:
{
hashFuncNames: ['sha384'];
enabled: "auto",
hashLoading: "eager",
}
你可以按照你自己的需求自定义配置项:
export default {
security: {
sri: {
hashFuncNames: ['sha-256'],
enabled: true,
hashLoading: 'lazy',
},
},
};