2009-11-27 65 views
1

是否有任何財產或任何功能給予哪些是防止上述問題..我們如何防止插入到文本框中的特殊標籤?在asp.net

我做了一個註冊表格..和我的朋友插入標籤到用戶名..它會引發錯誤服務器端..我試圖阻止它。與驗證,但..它不能..

我做到了..看看這個行..

txt_countryname.Text = HttpUtility.HtmlEncode(txt_countryname.Text); 

,但它不工作... - Sikender 0秒前[刪除此評論]

幫我...

+1

...請給予更多信息。什麼是標籤,你試過了什麼驗證? – 2009-11-27 20:35:02

+0

好..表格的標籤..就像​​ – sikender 2009-11-27 20:35:51

回答

2

這種行爲有一個很好的理由 - 避免cross site scripting攻擊。

可以通過添加這你的web.config禁用:

<configuration> 
    <system.web> 
     <pages validateRequest="false" /> 
    </system.web> 
</configuration> 

通過this article閱讀,找出原因無效請求驗證是一個壞主意。通過不暴露所有網頁的XSS攻擊

<%@ Page validateRequest="false" %> 

這將是一個更好的辦法,:

由於CodeMonkey指出的,你也可以做到這一點在@Page指令單頁的基礎。

+0

告訴我,如果我不假它這個屬性..然後錯誤將每次提升..好..所以..它可以!或者我應該把這個屬性設爲false ..你能告訴我... – sikender 2009-11-27 20:47:50

+2

最重要的是,如果請求驗證被關閉,確保你自己做驗證來限制安全風險是一個好主意。 – 2009-11-27 20:50:32

+2

我會對這種方法投反對票,因爲它禁用* all *頁面上的驗證,而不是我的建議,您只希望禁用單頁驗證。 – CodeMonkey 2009-11-27 20:53:56

1

Server.HtmlEncode

+0

我做到了..檢查出這一行.. txt_countryname.Text = HttpUtility.HtmlEncode(txt_countryname.Text);但它不工作... – sikender 2009-11-27 20:40:00

1
+0

我做到了..檢出這條線.. txt_countryname.Text = HttpUtility.HtmlEncode(txt_countryname.Text); 但它不工作... – sikender 2009-11-27 20:39:25

+1

請指定您遇到的錯誤。 – 2009-11-27 20:41:48

2

你也可以用asp:的RegularExpressionValidator 例子:

<asp:TextBox ID="txt_username" runat="server"></asp:TextBox> 
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" Text="Error" ErrorMessage="some error message" ValidationExpression="^[a-zA-Z0-9]+[a-zA-Z0-9]{4,15}$" SetFocusOnError="True" ControlToValidate="txt_username"> 
+0

這個術語叫做腳本注入..我沒有。知道。但我們無法通過使用..校驗器解決..謝謝..但是..你應該閱讀oded的鏈接文章。好,謝謝.. – sikender 2009-11-27 20:58:21

2

你會想,該頁面禁用腳本驗證。您得到該錯誤的原因是因爲默認情況下ASP.NET會驗證傳入的帖子。

Read more about it

相關問題