我正在研究ASP.Net C#+ jQuery ajax網站項目。我試圖防止xss攻擊,我知道下面並不是完整的方法,但這至少是我應該做的 - 在接受用戶的免費字符串輸入時使用HtmlEncode)。而且我真的很樂意檢查我是否做對了。防止XSS攻擊
假設我們有一個場景,其中一個頁面控件是一個「描述」文本框,用戶可以輸入用於描述其產品的「免費」字符串。爲防止xss攻擊輸入,在服務器端頁面方法中,我使用HtmlUtility.HtmlEncode()
打包了「說明」文本,因此在進入數據庫之前該字符串將被解釋爲純文本,即<script>
變爲>script<
。
下面的部分是我所懷疑的 - 如何處理html編碼的文本,然後將其返回給用戶?
當用戶想查看輸入的描述文本時,網站從數據庫中檢索並打印出來。
對描述執行html解碼是合乎邏輯的,所以用戶不會看到那些奇怪的><
字符?它會首先破壞使用HtmlEncode的目的嗎?如果是的話,這是正確的jQuery行解碼和打印文本回給用戶?
$("#txtDescription").val($(this).html(obj.Description).text();
謝謝你非常非常
嗨Kolink,謝謝你的回覆:)。最好是將文本保存到數據庫中,使用未經過濾的原始格式,但是在進入數據庫之前,我的系統需要進行包裝,不管怎樣,我不知道如何將其打印回用戶 – user1487182
我們應該向用戶打印奇怪的字符,還是在打印之前先解碼字符是正常的做法?如果是這樣,如何處理這部分?我需要打印這些值迴文本框和它顯示像" > <腳本>警報(' XSS ')< /腳本>謝謝你這麼多 – user1487182
這將是有益的事情,如果有人說出爲什麼你不應該編碼文本進入數據庫......特別是因爲答案有5票(頁面上最多)。 – EleventyOne