繁体   English   中英

jQuery Ajax-安全问题

[英]jquery ajax - security question

以下安全吗?

的index.html

    <div id="loader">loading...</div>
    <div onclick="foo()">click me</div>
    <div id="change"></div>
     <script>
        function foo(){
           jQuery.ajax({
              url: 'get.html',
              success: function(txt){
                  var x = $('#loader').html(txt)
              x=$('loader').find('script').html()
              eval(x)
          }
       })
    }
    </script>

get.html

<div>Header</div>
<script>
   function newfoo(){
        $('#change').html('hello world')
   }
</script>

从理论上讲这应该起作用。

注意:以上可能无法正常工作,仅是演示...

我的问题是:由于安全原因,在加载get.html时newFoo()不会自行运行...上述替代方案是否会构成任何安全威胁?

假设您总是可以信任源(在您的情况下为get.html),它将是安全的,但是就我个人而言,如果可以的话,我始终避免评估。 如果有人设法传递了不良数据,它确实使您容易受到注入攻击。

另请参阅: 关于eval的一个很好的SO问题

这样的代码并不安全,因为可以通过将<script>的目标设置为其url在任何服务器上轻松使用。 因此,任何感兴趣的人都可以从任何服务器调用此脚本。 不是很安全。

虽然有一些解决方法。 gmail方式是将while(1)附加到要返回的函数的开头,然后在执行代码之前在客户端上将其删除。 因为<script>将自动执行代码,所以除本地运行的脚本外,没有其他人可以使用此代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM