2011-09-08 44 views
1

我有一些JavaScript來檢索用戶提交的查詢字符串值,將一個隱藏字段的值的參數,自動發佈形式。此代碼是否容易受到XSS? (表格自動職位的onload)

這是在頁面加載全部完成。 XSS有沒有潛力?

<script> 
    function autoSubmit(){ 
     var url = ... /* retrieve URL from querystring parameter */ 
     document.getElementById("txt").value = url; 
     document.getElementById("myform").submit(); 
    } 
</script> 
<!-- ...... ---> 
<body onload="autoSubmit()"> 
<form id="myform" name="myform" method="POST" action="http://www.mysite.com/someform.php"> 
<input id="txt" name="txt" type="hidden" value="" /> 
</form> 
</body> 

回答

1

不是,您不是在任何地方執行遠程代碼,也不允許用戶輸入自己的標記。 但你確定你很關心XSS嗎?

該網站很可能易受對於通常XSRF原因某種形式的XSRF的:

  • 我asuming(既然你提到的查詢參數),您通過HTTP加載此頁,但它直接導致POST(可能)以某種方式修改數據。用戶可能被誘騙點擊一個帶有惡意參數的鏈接(會話正在進行?)
  • 同樣:假設您沒有采取任何其他預防措施,從遠程位置發佈可能會產生相同的效果。

更深入anaylsis需要看你的someform.php

+0

你提出有關XSRF潛在的好點。但是,我假設someform.php是健壯的,可以處理髮送給它的任何數據。 – frankadelic

+0

真的,我的問題是,執行'hiddenfield.value = some_user_input是否存在任何危險......'看起來它是安全的。 – frankadelic

+0

確實如此。你只是修改了dom節點的一個(真實的!)屬性,這在應用瀏覽器中應該是安全的,我不知道任何瀏覽器都會導致這種錯誤。 –

-1

來自客戶端的任何輸入很容易受到XSS。通過使用FireFox海報可以輕鬆繞過客戶端的任何代碼(隱藏輸入等)。

我不認爲你在這裏(將查詢字符串參數存入變量,然後通過表單數據提交)特別容易受到XSS的影響,只是因爲利用這種方式只會讓惡意用戶搞亂他們自己的渲染查看(在這種情況下,誰在乎?)。我能想到URL參數的特定值,它會中斷頁面​​的渲染嗎?不可以嗎?我不知道......但沒關係。

不要緊,因爲那是不是哪裏XSS用武之地。 XSS漏洞不會由單個用戶執行表單發佈表現出來。當所討論的輸入參數的值被呈現給惡意用戶以外的用戶可以看到的地方時,它們就會成爲問題。所以,這個暴露的XSS漏洞是否完全獨立於你在這裏提供的代碼。這取決於你對錶單中的post參數做了什麼以及如何在整個網站中呈現該值的內容。

+0

我在問代碼是否易受攻擊,而不是客戶端輸入。顯然,客戶端輸入是XSS定義的一個向量。如果您說CODE容易受到攻擊,您能否提供一個查詢字符串輸入,這會導致XSS使用此代碼? – frankadelic

+0

我已更新我的答案,嘗試並更清楚。 – Dave

相關問題