我在ASP.NET Web窗體中有幾個文本框。我想確保用戶在輸入HTML到這些文本框中輸入了而不是。但是,我不確定如何防止輸入HTML。因此,我決定只允許字母數字字符,空格,感嘆號,尖號,美元符號,百分號,插入符號,星號和左右括號。我忽略了&符號,因爲我不想讓他們輸入類似於「<腳本&rt; ...」的文件。「如何防止HTML進入ASP.NET Web窗體文本框
我該如何做?我是否正確地做這件事?
謝謝!
我在ASP.NET Web窗體中有幾個文本框。我想確保用戶在輸入HTML到這些文本框中輸入了而不是。但是,我不確定如何防止輸入HTML。因此,我決定只允許字母數字字符,空格,感嘆號,尖號,美元符號,百分號,插入符號,星號和左右括號。我忽略了&符號,因爲我不想讓他們輸入類似於「<腳本&rt; ...」的文件。「如何防止HTML進入ASP.NET Web窗體文本框
我該如何做?我是否正確地做這件事?
謝謝!
看一看這裏 http://msdn.microsoft.com/en-us/library/ff649310.aspx
你可以把毯子聲明web配置ValidateRequest = true,將檢查所有的用戶輸入,如果用戶插入壞字的東西拋出一個錯誤。
如果你需要允許一些html標籤,那麼你將需要推出自己的。
+1內置...(處理錯誤當然)。 – 2010-09-06 19:40:56
-1:我不認爲向用戶拋出錯誤/例外是一種好的做法。而ValidateRequest = true並不包括所有形式的XSS預防,如果這是意圖。 – 2010-09-08 13:48:28
@Caspar Kleijne能否提供一些對ValidateRequest的引用,而不是涵蓋所有形式的XSS?我很想知道這件事。我認爲微軟在抓住所有危險的用戶輸入案例方面會做得比我/一般的開發人員更好。 – 2010-09-09 21:15:39
默認情況下,該頁面將阻止用戶在文本框或textareas中發佈HTML或腳本。見MSDN
可以使用的方法來清潔HTML代碼從入門像:
public static string ClearHTML(string Str, Nullable<int> Character)
{
string MetinTxtRegex = Regex.Replace(Str, "<(.|\n)+?>", " ");
string MetinTxtSubStr = string.Empty;
if (Character.HasValue)
{
if (MetinTxtRegex.Length > Character)
{
MetinTxtSubStr = MetinTxtRegex.Substring(0, Character.Value);
MetinTxtSubStr = MetinTxtSubStr.Substring(0, MetinTxtSubStr.LastIndexOf(" ")) + "...";
}
else
{
MetinTxtSubStr = MetinTxtRegex;
}
}
else
{
MetinTxtSubStr = MetinTxtRegex;
}
return MetinTxtSubStr;
}
無論您選擇什麼方法,請確保您在客戶端和服務器上驗證您的輸入 - 客戶端驗證可以輕鬆繞過javascript調試器。 – 2010-09-02 20:23:31