📅  最后修改于: 2023-12-03 15:39:01.479000             🧑  作者: Mango
子资源完整性验证(Subresource Integrity,简称SRI)是一种Web安全机制,可以防止资源(如JavaScript、CSS文件)被第三方篡改。SRI通过对资源进行哈希处理,生成哈希值,并与网页中引用该资源的标签(如<script>
、<link>
标签)进行匹配,从而验证资源的完整性。
SRI可以有效防止以下攻击:
DNS劫持:攻击者通过劫持DNS服务器,将用户请求某个资源的域名映射到攻击者的服务器,从而向用户返回被篡改的资源。通过SRI,网页可以验证所请求资源的哈希值,从而发现可能的篡改。
中间人攻击:攻击者可以在用户请求资源和服务器返回资源之间的通信过程中,拦截并篡改资源。通过SRI,网页可以验证请求到的资源是否为服务器所返回的原始资源。
使用SRI的步骤如下:
subresource-integrity
属性为资源的标签添加哈希值。例如:<script src="example.js" integrity="sha384-YGGR8I44GcBxQICTjU+3mUxFeF8MlYqX/dV4bc0GfZ803tB+Hx5iHzG52sCoiXyT"></script>
生成资源的哈希值。可以使用在线工具(如srihash.org),也可以使用命令行工具(如shasum)。
在网页中引用资源,并验证其哈希值是否匹配。如果匹配,则可以信任该资源;如果不匹配,则应该警惕可能的篡改。
在使用SRI时,需要注意以下几点:
SRI仅对通过HTTPS协议传输的资源有效。
SRI需要较新的浏览器支持,不支持IE浏览器。
SRI不适用于动态生成的资源(如通过AJAX请求返回的资源)。
子资源完整性验证是一种重要的Web安全机制,可以有效防止资源被篡改。通过为资源的标签添加哈希值,网页可以验证资源的完整性,并信任安全的资源。