其他受訪者是正確的:有許多情況下可能發生注射。請記住,解決方案必須考慮可能發生注入的許多上下文。黑名單(或「已知不好」)過濾方法將無法正常工作,因爲它們會受到攻擊,這些攻擊使用意外的字符集編碼注入,創造性地使用空白以及其他技術。欲瞭解更多信息,請參閱OWASP DOM Based XSS。該頁面的鏈接教育'問題'方面。
至於解決方案,請考慮我們剛發佈的OWASP XSS DOM Prevention Cheat Sheet。在備忘單中引用了幾個工具包,可幫助您實施轉義或編碼策略。可能MY FAVORITE確保編寫服務器編寫的客戶端代碼並妥善轉義的方法是JXT。從谷歌代碼頁:
<!-- Automatically escaped content -->
Hello ${user.getName()}!
<!-- Example tag with 3 different contextual encoding requirements -->
<img src="/profile-photo?user=${user.getId()}"
alt="Photo of ${user.getName()}"
onclick="openProfile('${user.getId()}')" />
<!-- Override the default escape, rare, but occasionally needed: -->
<jxt:out value="${user.getProfileHtml()}" escape="none"/>
注意它包括自動轉義爲背景也是一個自定義標籤,允許非轉義輸出,在你的頁面的情況下,特殊元素/應用程序將通過車被打破漂白編碼機制。
打算提一下,但上面鏈接到http://www.owasp.org/index.php/XSS%5F%28Cross%5FSite%5FScripting%29%5FPrevention%5FCheat%5FSheet做得很好 - 即使CSS可以成爲XSS的來源。這麼多的攻擊媒介。 – 2009-10-27 01:11:45
是的,很好的鏈接。 – 2009-10-27 01:19:16
感謝您的來源和簡單的例子。 – bucabay 2009-10-27 01:25:41