2011-08-26 101 views
1

在jQuery中这样做是否XSS安全?是否使用URL从隐藏域XSS安全中调用AJAX?

<html> 
... 
<input type="text" id="message" value="" /> 

<input type="hidden" id="url" name="url" value="http://www.mysite.com/ajax-server-code" /> 

<script> 
var url = $('#url'); 
$.ajax({ 
url: url,   
dataType: 'json', 
success: function(data) { 
$('message').html(data.message); 
} 
}); 
</script> 
... 
</html> 

基本上,我在这里做的是:

  • 使用隐藏域得知其AJAX URL调用
  • 调用Ajax来的URL
  • 使用这些数据来改变DOM
+2

这不起作用,因为您的变量“url”不包含正确的url,但它包含隐藏的元素。将其更改为'var url = $('#url')。val()'。对于这个问题本身:为此目的使用隐藏字段的值是不安全的,因为用户可以容易地改变隐藏字段的值。 –

+0

[同源策略](http://en.wikipedia.org/wiki/Same_origin_policy)不允许XSS。 – MaXo

+0

XSS不必从外部URL加载;该政策只是让它更难。 –

回答

2

是的,没关系。我没有看到任何XSS问题。

+1

取决于隐藏字段是如何填充的,但它可能是安全的。如果有某种方式让用户通过一个GET变量来影响URL的内容,那么可能不会。 –

+0

该字段使用服务器变量从服务器填充,而不是用户输入。 – tink01

1

无论如何,DOM可以使用DOM Inspector进行编辑,所以你绝对不应该相信浏览器要做或者有你认为应该做的事情。检查您收到的任何数据。

+0

虽然是真的,但它并不真正相关。修改你自己的DOM并不是真正的XSS。 –

+0

好吧,我想如果你能够以任何方式修改DOM,那么页面是不安全的。使用FireBug或任何DOM编辑器不会使页面不安全,否则Web上的每个页面都不安全... – tink01

+0

页面只是输出。重要的是应用程序的安全性。 – Emyr