Subresource Integrity

来源:互联网 发布:国盛证券交易软件 编辑:程序博客网 时间:2024/05/29 15:13

在Bootstrap v4的官网看到了linkscript有两个不认识的属性integritycrossorigin,长见识的机会又到了

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.css" integrity="sha384-rwoIResjU2yc3z8GV/NPeZWAv56rSmLldC3R/AZzGRnGxQQKnKkoFVhFQhNUwEyJ" crossorigin="anonymous"><script src="https://code.jquery.com/jquery-3.1.1.slim.min.js" integrity="sha384-A7FZj7v+d/sdmMqp/nOQwliLvUsJfDHW+k9Omg/a/EheAdgtzNs3hpfag6Ed950n" crossorigin="anonymous"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/tether/1.4.0/js/tether.min.js" integrity="sha384-DztdAPBWPRXSA/3eYEEUWrWCy7G5KFbe8fFjk5JAIxUYHKkDx6Qin1DkWx51bBrb" crossorigin="anonymous"></script><script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/js/bootstrap.min.js" integrity="sha384-vBWWzlZJ8ea9aCX4pEW3rVHjgjt7zpkNpZk+02D9phzyeVkE+jo0ieGizqPLForn" crossorigin="anonymous"></script>

integritycrossorigin是干什么的?SRI登场!

SRI

SRI,Subresource Integrity 的缩写,中文:子资源完整性,由 Web 应用安全工作组(Web Application Security Working Group)发布。

integrity属性就表示开启 SRI,支持 SRI 的浏览器有 Chrome 45+ 和 FireFox 43+。

启用 SRI 后,浏览器会根据资源的签名算法(支持 sha256、sha384 和 sha512)对资源进行验证,如果签名不一致,则不执行资源,下面是使用sha384算法生成https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.css的签名

curl https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.css | openssl dgst -sha384 -binary | openssl enc -base64 -ArwoIResjU2yc3z8GV/NPeZWAv56rSmLldC3R/AZzGRnGxQQKnKkoFVhFQhNUwEyJ

integrity的值是算法-签名,可以看一下官网 CDN 资源https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.cssintegrity值与我们生成的一样,如果该资源被篡改,则生成的签名就不一样了,浏览器就不会执行该资源。

SRI 要求被请求的资源必须同域,或者加crossorigin="anonymous",测试了一下,如果上面的四个 CDN 资源去掉crossorigin="anonymous",则 CSS 和 JS 都不会起作用。

参考

https://imququ.com/post/subresource-integrity.html

0 0
原创粉丝点击