检测JavaScript文件的欺骗

时间:2011-08-07 23:16:38

标签: javascript asp.net security spoofing

假设我正在开发一堆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)。

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

  • 首先下载Widget的bootstraper js
  • Widget的bootstraper js检查这些库文件是否存在所需的版本(例如,是否在页面上加载了jQuery v1.6.2,myCommon v1.1等)
  • 如果加载了其中任何一个,请不要请求这些文件,而只下载丢失的脚本。
  • 这些脚本然后调用一些web服务,做一些魔术并在页面上呈现HTML

关注:检查已加载的文件会引入脚本欺骗的漏洞。恶意用户欺骗了一旦加载的库,他用来窃取敏感信息或做其他坏事。

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

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

1 个答案:

答案 0 :(得分:2)

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