2010-01-13 141 views
3

我目前工作的地方我用錨用jQuery提交表單這樣一個網站:安全,危險使用錨時,而不是提交輸入

$("a[title=submit]").click(function(){ 
     $(this).parents("form").submit(); 
     }); 
}); 

然而I've read,使用鏈接這種方式是不好的實踐,安全明智。

有人知道問題是什麼嗎?

+0

我認爲他們可能會混淆'''GET'。用「GET」而不是「POST」「發佈」表單確實是危險的。但這不是你的代碼所做的。 – 2010-01-13 14:50:43

+0

@克雷格 - 這肯定只是通過安全連接的情況?由於POST數據是以HTTP頭中的純文本形式提交的,因此對於像GET數據一樣的用戶而言,它是不可見的。 – Graza 2010-01-13 14:53:52

+1

這不僅僅是知名度問題。 'POST'旨在修改服務器狀態;因此存在一定的限制(例如,當您在F5上使用'POST'時發出的警告),以防止用戶意外執行此操作。也考慮http://thedailywtf.com/Articles/The_Spider_of_Doom.aspx – 2010-01-13 15:37:18

回答

4

這是不好的做法,但「危險」與安全無關。

使用腳本輔助鏈接來提交表單而不是僅僅提交一個提交按鈕不必要地讓你的表單需要JavaScript(所以它不會工作,因爲JS不可用或由於其他錯誤而中斷),並使鏈接在「新窗口中打開」和「書籤鏈接」等功能不合適,不適用於表單提交。

使用正常的input type="submit"按鈕。如果你真的想讓它看起來像一個鏈接出於某種原因,例如它的樣式,例如:

input.linklike { 
    color: blue; text-decoration: underline; 
    border: none; padding: 0; 
    width: auto; overflow: visible; /* hack for IE */ 
} 
4

這沒有任何安全問題,因爲每個人都可以使用Firebug或其他工具在本地機器上操作html/js/css代碼。請記住,您的表單應始終由服務器(後端)驗證。

+0

我不會說沒有安全問題,但我同意它不是比傳統表單提交更安全。 – 2010-01-13 14:49:24

1

沒有安全問題,但它可能不適用於所有用戶。

Javascript可能被關閉(在這種情況下,您根本無法提交),或者安全插件可能會在腳本錯誤地檢測到後腳本爲惡意腳本時阻止該腳本。

如果javascript關閉,您應該確保頁面仍然可用。也許在html中渲染提交按鈕,然後使用jQuery刪除按鈕並插入錨點。這樣,如果javascript正常工作,你會得到你的錨定提交,但如果不是,你仍然會得到你的提交按鈕

+0

沒錯,這不是一個安全問題,而是一個可訪問性問題。表單應該有一個提交按鈕,而不僅僅是一個提交鏈接。 – 2010-01-13 14:51:03

相關問題