Javascript使用integrity属性进行安全验证


Posted in Javascript onNovember 07, 2021

一、script标签引入文件

html中,script标签可以通过src属性引入一个js文件,引入的js文件可以是本地的,也可以是远程的。

1. 引入本地文件

开发环境一般多引入本地js文件。


<script src="./js/index.js"></script>
2. 引入远程文件

部署到线上后,一般会分发到cdn,需要引入远程文件,形如:


<script src="https://cdn.xxx.xx/js/index.js"></script>
只是引入远程文件存在一个问题,如果对应的文件被篡改了,那么可能会对用户造成影响。虽然cdn一般都是可靠的,但是不排除受到黑客的攻击。

在这种情况下,可以通过script标签的属性 integrity 来进行安全验证。

integrity安全验证
integrity属性设置引入js文件的hash值,浏览器在下载js文件时候,会对js文件进行hash计算,如果一致则正常加载,否则拒绝加载运行。

形如:

<script
    integrity="sha384-oqVuAfXRKap7fdgcCY5uykM6+R9GqQ8K/uxy9rx7HNQlGYl1kPzQho1wx4JwY8wC"
    src="https://cdn.xxx.xx/js/index.js"></script>

二、示例

3. 引入vue的cdn资源

例如我们要引入vue的cdn资源:

https://unpkg.com/vue@3.0.5/dist/vue.global.js

可以通过 https://www.srihash.org/ 生成hash值。

integrity生成hash值
integrity生成hash值

最后将 integrity 的值添加到script标签即可。


<script src="https://unpkg.com/vue@3.0.5/dist/vue.global.js"
    integrity="sha384-0k9//QJdpmfSdp5IK3oJjOYPfz42f2FE0goMLtK9Vq7aKllvc4Lnz7lHPHiFhvDP"
    crossorigin="anonymous">
</script>

4. 验证是否正常

因为引入的是cdn资源,无法直接修改,但是修改 integrity 的值,如果修改了 integrity 的值,最终浏览器会报如下错误:

Failed to find a valid digest in the 'integrity' attribute for resource 'https://unpkg.com/vue@3.0.5/dist/vue.global.js' with computed SHA-256 integrity 'Wr5PnkpmZ3oQFRZLfDrI6fsePSMak5h8rW2rqq+mdWg='. The resource has been blocked.
意思就是cdn文件的hash值和 integrity 的不匹配。

Javascript 相关文章推荐
JQuery UI DatePicker中z-index默认为1的解决办法
Sep 28 Javascript
Ext对基本类型的扩展 ext,extjs,format
Dec 25 Javascript
jquery 插件学习(四)
Aug 06 Javascript
jQuery实现页面滚动时层智能浮动定位实例探讨
Mar 29 Javascript
JQuery的ready函数与JS的onload的区别详解
Nov 21 Javascript
简易的投票系统以及js刷票思路和方法
Apr 07 Javascript
基于Bootstrap的网页设计实例
Mar 01 Javascript
详解Vue爬坑之vuex初识
Jun 14 Javascript
jQuery+CSS实现的标签页效果示例【测试可用】
Aug 14 jQuery
JavaScript实现Tab选项卡切换
Feb 13 Javascript
vue实现选中效果
Oct 07 Javascript
vue 封装面包屑组件教程
Nov 16 Javascript
JavaScript中时间格式化新思路toLocaleString()
Nov 07 #Javascript
JavaScript中isPrototypeOf函数
JavaScript原型链详解
JavaScript组合继承详解
详细聊聊vue中组件的props属性
教你一步步实现一个简易promise
Nov 02 #Javascript
一定要知道的 25 个 Vue 技巧
You might like
PHP array_flip() 删除重复数组元素专用函数
2010/05/16 PHP
PHP提取字符串中的图片地址[正则表达式]
2011/11/12 PHP
基于PHP array数组的教程详解
2013/06/05 PHP
PHP5.2中PDO的简单使用方法
2016/03/25 PHP
php中访问修饰符的知识点总结
2019/01/27 PHP
css3实现背景模糊的三种方式
2021/03/09 HTML / CSS
用jscript实现列出安装的软件列表
2007/06/18 Javascript
用javascript实现给图片加链接
2007/08/15 Javascript
JavaScript操作Cookie方法实例分析
2015/05/27 Javascript
基于javascript实现仿百度输入框自动匹配功能
2016/01/03 Javascript
AngularJS使用ng-Cloak阻止初始化闪烁问题的方法
2016/11/03 Javascript
微信小程序开发之map地图实现教程
2017/06/08 Javascript
ionic环境配置及问题详解
2017/06/27 Javascript
vue修改对象的属性值后页面不重新渲染的实例
2018/08/09 Javascript
微信小程序rich-text富文本用法实例分析
2019/05/20 Javascript
electron+vue实现div contenteditable截图功能
2020/01/07 Javascript
Vue基本指令实例图文讲解
2021/02/25 Vue.js
[06:53]DOTA2每周TOP10 精彩击杀集锦vol.3
2014/06/25 DOTA
Python通过websocket与js客户端通信示例分析
2014/06/25 Python
整理Python中的赋值运算符
2015/05/13 Python
python通过apply使用元祖和列表调用函数实例
2015/05/26 Python
使用Python判断质数(素数)的简单方法讲解
2016/05/05 Python
import的本质解析
2017/10/30 Python
利用Pyhton中的requests包进行网页访问测试的方法
2018/12/26 Python
Python 存取npy格式数据实例
2020/07/01 Python
英国泰坦旅游网站:全球陪同游览,邮轮和铁路旅行
2016/11/29 全球购物
俄罗斯购买内衣网站:Trusiki
2020/08/22 全球购物
简历中自我评价怎么写
2014/02/12 职场文书
高中生操行评语
2014/04/25 职场文书
党的群众路线教育实践活动心得体会范文
2014/11/05 职场文书
2014年前台文员工作总结
2014/12/08 职场文书
小学英语听课心得体会
2016/01/14 职场文书
2019初中学生入团申请书
2019/06/27 职场文书
Spring Bean的实例化之属性注入源码剖析过程
2021/06/13 Java/Android
python自动化操作之动态验证码、滑动验证码的降噪和识别
2021/08/30 Python
排查MySQL生产环境索引没有效果
2022/04/11 MySQL