HTML表單提交的安全問題
<form>元素定義瞭如何傳送資料。它的所有屬性都是為了讓您配置當用戶點選提交按鈕時傳送的請求。兩個最重要的屬性是action和method。
-
action屬性
- 這個屬性定義了傳送資料要去的位置。它的值必須是一個有效的URL。如果沒有提供此屬性,則資料將 被髮送到包含表單的頁面的URL
-
method屬性
- 該屬性定義瞭如何傳送資料。HTTP協議提供了幾種執行請求的方法;HTML表單資料可以通過許多不同的資料傳輸,其中最常見的是GET方法和POST方法。
每次向伺服器傳送資料時,都需要考慮安全性。到目前為止,HTML表單是最常見的攻擊媒介(可能發生攻擊的地方)。這些問題從來都不是來自HTML表單本身,它們來自於伺服器如何處理資料。
XSSCSRF
跨站指令碼(XSS)和跨站點請求偽造(CSRF)是常見的攻擊型別,它們發生在當您將使用者傳送的資料顯示給使用者或另一個
XSS允許攻擊者將客戶端指令碼注入到其他使用者檢視的Web頁面中。攻擊者可以使用跨站點指令碼攻擊的漏洞來繞過諸如同源策略之類的訪問控制。這些攻擊的影響可能從一個小麻煩到一個重大的安全風險。
CSRF攻擊類似於XSS攻擊,因為它們以相同的方式攻擊——向Web頁面中注入客戶端指令碼——但它們的目標是不同的。CSRF攻擊者試圖將特權升級到特權使用者(比如站點管理員)的許可權,以執行他們不應該執行的操作(例如,將資料傳送給一個不受信任的使用者)。
XSS攻擊利用使用者對web站點的信任,而CSRF攻擊則利用網站為其使用者提供的信任。
為了防止這些攻擊,您應該始終檢查使用者傳送給伺服器的資料(如果需要顯示),儘量不要顯示使用者提供的HTML內容。相反,您應該處理使用者提供的資料,這樣您就不會逐字地顯示它。當今市場上幾乎所有的框架都實現了一個最小的過濾器,它可以從任何使用者傳送的資料中刪除HTML<script>、<iframe> 和<object> 元素。這有助於降低風險,但並不一定會消除風險。