Dan*_*Dan 21 security jquery cdn
我们构建具有公共(非安全)区域和安全(通过HTTPS提供)区域的站点,并且我们使用jQuery库.
最近我建议我们使用Google CDN进行jQuery交付.我的一些同事对这种提供JavaScript库的方式的安全方面表示担忧.
例如,他们提到有人可能会劫持DNS服务器,然后注入恶意修改的库,为不同的安全攻击打开大门.现在,如果黑客可以通过谷歌CDN注入恶意代码,那么如果从网站本身提供jQuery,他可能也会这样做,对吗?
谷歌CDN似乎支持通过SSL服务库.
从CDN服务jQuery真的不那么安全,然后从服务器本身服务吗?这种威胁有多严重?
减轻风险的一种方法是对从谷歌获得的文件运行校验和,并将其与已经拥有的已知良好校验和进行比较.
在回答有关Google是否以任何方式更改这些文件的问题时,Google员工Ben Lisbakken建议将 Google提供的文件的MD5校验和与从其维护者主页上获得的该文件的规范版本进行比较.阅读链接网站上的评论8以获取上下文.
如果您担心DNS劫持,那么当然同样的问题将适用于从"原始"网站获得的文件.您也可能不希望在每次请求时对jQuery文件运行校验和产生速度惩罚 - 除非您非常偏执.当然,这样做会消除使用CDN的所有优点.
但假设你只是有点偏执,你可以尝试这样的事情:
确保您引用了Google的jQuery文件的唯一且特定版本.例如,执行以下操作:
http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js
Run Code Online (Sandbox Code Playgroud)
而不是这个:
http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js
Run Code Online (Sandbox Code Playgroud)
后一版本现在可能会返回1.4.2,但明天会返回1.4.3.如果您有http和https需求的组合,则可以使用协议相对URL,如下所示:
//ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js
Run Code Online (Sandbox Code Playgroud)最初为此文件生成并存储您自己的校验和.
当然,您可以通过编程方式执行此操作.你决定什么时间间隔有意义.每一分钟?每五个?您现在拥有自动切换开关的材料,其灵敏度可以根据您的喜好进行调整."监视器"例程当然不必在您希望保护的应用程序中同步运行; 也许你只是为了这个目的在同一台服务器上运行一个小实用程序.
测试很容易:只需改变存储的哈希值即可.由于您引用了特定的文件版本,因此每次次要版本更新都不会按下应急按钮.如果您想要转移到新版本的jQuery,请更改站点上的AJAX API URL并存储新哈希.
| 归档时间: |
|
| 查看次数: |
3321 次 |
| 最近记录: |