在文件系统上运行的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为我们完成所有这些操作。希望这可以帮助。