Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检测JavaScript文件的欺骗_Javascript_Asp.net_Security_Spoofing - Fatal编程技术网

检测JavaScript文件的欺骗

检测JavaScript文件的欺骗,javascript,asp.net,security,spoofing,Javascript,Asp.net,Security,Spoofing,假设我正在开发一堆JS小部件,这些小部件可以嵌入到任何网页上(类似于iGoogle、Pageflakes小部件) 客户端可以通过包含脚本标记来嵌入小部件: <div id="widgetHost"> <script src="http://fantasticwidgets.net/awesomeWidget.js"></script> <script src="http://fantasticwidgets.net/awesomeWidg

假设我正在开发一堆JS小部件,这些小部件可以嵌入到任何网页上(类似于iGoogle、Pageflakes小部件)

客户端可以通过包含脚本标记来嵌入小部件:

<div id="widgetHost">
    <script src="http://fantasticwidgets.net/awesomeWidget.js"></script>
    <script src="http://fantasticwidgets.net/awesomeWidgetAgain.js"></script>
</div>

现在,这些小部件依赖于公共库(让我们使用jQuery、下划线和我自己的一些库,例如myCommon.js)

理想情况下,这是应该发生的:

  • 小部件的引导程序js首先下载
  • Widget的bootstraperjs检查这些库文件及其所需版本是否存在(比如jqueryv1.6.2是否加载到页面上,mycommonv1.1等)
  • 如果加载了这些文件中的任何一个,不要请求这些文件,只下载丢失的脚本
  • 这些脚本然后调用一些Web服务,执行一些魔术并在页面上呈现HTML
问题:检查已加载的文件会引入脚本欺骗漏洞。恶意用户一旦加载了库,就会欺骗这些库,用它们窃取敏感信息或做其他坏事

解决方案:不要检查已加载的库,始终重新发送所有库。这仍然不是防弹的,但至少使它有点难,因为他不得不再次欺骗。 但是,这会导致带宽浪费和加载时间增加


问题:是否可以检测加载的文件是否被篡改,最好是在客户端?还是必须包含服务器端解决方案?如果有必要的话,我已经在服务器端运行ASP.Net了。

这里唯一真正的解决方案是“使用HTTPS交付脚本”。如果坏人可以用另一个域的HTTPS内容毒害用户的浏览器缓存,那么你的游戏已经结束了,因为他也有权更改您交付给用户的页面。

好吧,您可以在包含的脚本文件中包含的特定变量中包含一个校验和,并检查该校验和是否与当前状态的变量校验和匹配。如果此人首先可以劫持它,在添加库之前或之后,他们可以轻松地窃取信息。你不能保证它的安全。唯一能让它安全的方法就是iframe。你们能详细谈谈你们的评论吗?如果可能的话,使用一些(伪)代码?我同意,但不是所有客户都想要
https
。在这种情况下,我想每次提供文件都是更安全的赌注,对吗?在这种情况下,你所做的任何事情都无法阻止中间人的攻击。如果他可以拦截脚本请求,他可以更改脚本。如果他可以截取脚本,他还可以截取主页并将其更改为加载自己的脚本。远程服务器的内容加密和身份验证(两者都由HTTPS提供)是唯一可以阻止MITM攻击的机制。