在文件系统上运行的HTML / Javascript应用程序,安全问题
-
03-07-2019 - |
题
我正在组建一个小工具,一些商业人士可以在他们的本地文件系统上运行,因为我们不想为它设置主机。
基本上,它只使用HTML + Javascript(使用jQuery)从第三方使用REST提取一些报告。
问题是,FF3和IE不允许ajax调用,我得到:
Access to restricted URI denied" code: "1012
显然它是一个XSS问题......我该如何解决它?返回的数据是XML格式。
我试图这样做:
$.get(productUrl, function (data){
alert (data);
});
编辑:要清楚......我没有为此设置一个内部主机(通过大量繁文缛节),由于数据被检索,我们无法在外部托管。
编辑#2 :一点点测试表明我可以使用IFRAME发出请求。有谁知道使用隐藏的IFRAME是否有任何缺点?
解决方案
在类似的情况下,我的解决方案是使用Mark Of The Web,这是IE认可的特殊HTML注释。它将页面放在不同的安全区域中。
参考: MSDN
其他提示
如果安装了Python,则提供文件的网络服务器就像
一样简单python -c “import SimpleHTTPServer;SimpleHTTPServer.test()”
编辑:原始海报不能使用此方法,但总的来说,我认为这是解决此问题的未来用户遇到此问题的方法。
您是否控制提供数据的服务器?如果是这样,您可以设置回调。基本思想是在脚本中有一个处理传入数据的函数(在您的情况下是一个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为您完成所有这些操作。希望这会有所帮助。
不隶属于 StackOverflow