AutoPostBack和HTML编码

时间:2012-08-01 03:01:33

标签: asp.net

我在文本字段和AutoPostBack中遇到HTML字符时遇到问题。

我有类似下面的内容:

<asp:FormView ID="FormView1" runat="server" 
              DataKeyNames="ID" DataSourceID="SqlDataSource4"
              ForeColor="#333333" DefaultMode="Edit" 
              HorizontalAlign="Center" Font-Size="X-Small"
              Width="100%" OnDataBound="FormView1_DataBound">
      <asp:TextBox ID="fooTextBox" runat="server" 
                   Width="100%" Rows="4" TextMode="MultiLine"
                   CssClass="tr4" Text='<%# Bind("foo") %>' AutoPostBack="true"
                   OnTextChanged="ChangedRecord" />
</asp:FormView>

现在,当用户进入类似

的文本框时
  

&LT; FOO&GT;

由于文本字段中的HTML字符,它将引发错误500。

如何在通过AutoPostBack发送之前管理它?

2 个答案:

答案 0 :(得分:2)

这是,因为Page的ValidateRequest属性的(默认值为 true )。您可以关闭ValidateRequest,以便允许标记,脚本等(潜在的危险值)。

如果您的应用程序定位到.net framework version 4.0,请在web.config中添加以下部分:

<system.web>
    <compilation debug="true" targetFramework="4.0" />
    <httpRuntime requestValidationMode="2.0" />
</system.web>

答案 1 :(得分:0)

如果您需要在文本框中输入html / xml,处理它的最佳方法是 html encode 您的输入。 <foo>将成为&lt;foo&gt;这将使表单发布更安全。请记住,您需要在提交后对其进行解码才能使用。使用以下链接检查html编码。 http://www.opinionatedgeek.com/DotNet/Tools/HTMLEncode/Encode.aspx/