确保JavaScript没有被篡改

时间:2013-12-12 18:09:54

标签: javascript security cryptography digital-signature

我正在编写一个Web应用程序,对数据进行一些客户端加密,以确保我永远不会看到客户端发送到我的服务器的内容。我真正担心的是,如果第三方可以访问我的JavaScript代码,然后在我的JavaScript文件中添加后门或其他恶意代码。

由于JavaScript通常托管在第三方CDN上,如何在浏览器下载之前确保JavaScript文件未被更改或篡改?我宁愿在我的页面上有一个很大的安全通知,而不是在我的客户端浏览器中加载一些篡改JavaScript。

在正常程序中,我会对文件进行数字签名,以确保它没有被篡改,但我认为浏览器不支持在下载和/或加载JavaScript文件之前检查给定的签名。必须有一些解决方案,否则托管CDN上的任何文件将是一个巨大的安全风险。 SSL仅保护传输中的文件,而不是当它位于CDN服务器上时。

2 个答案:

答案 0 :(得分:3)

如果您希望确保他们不会更改到客户端并且不信任任何第三方CDN,则需要通过HTTPS直接从源服务器提供JavaScript内容。

比较哈希值(根据@rishta's回答)意味着您必须托管JavaScript才能执行此操作(在您的页面中或从服务器提供的单独的.js文件中)这样您也可以只需从您的服务器提供客户端加密代码,这可能意味着整体开销更少。

答案 1 :(得分:1)

除非脚本是动态的,否则您可以将它们的哈希存储在数据库中并比较客户端。见http://pajhome.org.uk/crypt/md5/