在文件系统上运行的HTML / Javascript应用程序,安全性问题
时间:2020-03-06 15:02:33 来源:igfitidea点击:
我整理了一个小工具,一些商人可以在他们的本地文件系统上运行,因为我们不想为其设置主机。
基本上,它只是HTML + Javascript(使用jQuery),可从REST中使用REST提取一些报告。
问题是,FF3和IE不允许进行ajax调用,我得到:
Access to restricted URI denied" code: "1012
显然,这是一个XSS问题...我该如何解决?返回的数据为XML格式。
我正在尝试通过这种方式做到这一点:
$.get(productUrl, function (data){ alert (data); });
编辑:要清楚...我没有为此设置内部主机(很多繁文tape节的方式),由于检索到的数据,我们不能在外部托管此主机。
编辑#2:进行了一些测试,表明我可以使用IFRAME发出请求。有人知道使用隐藏的IFRAME是否有不利之处吗?
解决方案
如果我们安装了Python,则用于提供文件的网络服务器可以像
python -c “import SimpleHTTPServer;SimpleHTTPServer.test()”
编辑:原始海报不能使用此方法,但总的来说,我认为这是为将来有此问题的用户解决此特定问题的方法。
在类似情况下,我的解决方案是使用Mark Of The Web,这是IE可以识别的特殊HTML注释。它将页面放置在其他安全区域中。
参考:MSDN
我们控制提供数据的服务器吗?如果是这样,我们可以设置一个回调。基本思想是我们在脚本中有一个函数来处理传入的数据(在情况下为XML字符串)。然后,服务器以回调函数的JavaScript代码段(以字符串作为参数)响应请求。而不是使用AJAX,而是向页面添加了一个新的脚本标签。这是JSONP的基础。看起来像这样。
本地页面。
<script> function callback(str) { alert(str); } function makeRequest(param) { var s = document.createElement('script'); s.src = 'http://serveranywhere/script.bla?' + params; document.getElementsByTagName[0].appendChild(s); } </script>
远程服务器返回
callback('<xml><that><does><something></something></does></that></xml>');
现在,将脚本添加到页面后,我们提供的字符串将执行函数回调。 jQuery调用在$ .ajax调用中使用JSONP为我们完成所有这些操作。希望这可以帮助。