2011-08-26 42 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