2014-10-17 134 views
0

htmlspecialchars()是一種防止對HTML元素屬性發起攻擊的任何風險的萬無一失的方法?htmlspecalchars中的html值屬性是否足以防止xss?

例如,在此輸入元素中是否還會使用htmlspecialchars()編碼引號確保總體安全性?

從邏輯上看,它會阻止任何字符串脫離value屬性的上下文;還是有更多可以做到的?

<input type="text" value="<?php echo htmlspecialchars($dangerousString, ENT_QUOTES, 'UTF-8'); ?>" 
+0

文本輸入字段的值與xss保護有什麼關係? – arkascha 2014-10-17 09:40:51

+0

在表單字段正在用用戶在表單驗證失敗後輸入的數據重新填充的情況下。如果沒有保護,以「>開頭的字符串可能會終止屬性和元素。 – Smithy 2014-10-17 09:51:23

+0

只需在文本輸入框中輸入文本就不可能實現,這需要相應地調用DOM,這意味着攻擊者已經擁有腳本訪問權限,所以它 – arkascha 2014-10-17 09:55:58

回答

1

假設你使用的是現代版本的php,htmlspecialchars應該這樣做。

請務必注意,您還必須通過標題和元標記爲整個頁面提供相同的編碼(utf8)。否則,您需遵守UTF-7 injection

另外請注意,htmlspecialchars只適用於像value這樣的屬性,它不會解釋javascript。這是不夠src和朋友。