从客户端检测到潜在危险的Request.Form值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从客户端检测到潜在危险的Request.Form值相关的知识,希望对你有一定的参考价值。

[当我尝试发布包含<whatever>的任何内容时,我会得到

潜在危险的Request.Form从客户端检测到值说明:请求验证具有检测到潜在危险客户输入值,以及该请求已被中止。这个值可能表示尝试损害您的安全应用程序,例如跨站点脚本攻击。允许页面覆盖申请请求验证设置,设置的requestValidationMode属性httpRuntime配置部分requestValidationMode =“ 2.0”。例:。后设置此值,您可以通过设置禁用请求验证页面中的validateRequest =“ false”指令或配置部分。但是,这是强烈建议您应用程序显式检查所有在这种情况下输入。欲了解更多信息,请参阅http://go.microsoft.com/fwlink/?LinkId=153133

异常详细信息:System.Web.HttpRequestValidationException:潜在危险的Request.Form从客户端检测到值

我有以下asp.net代码

 <asp:DetailsView ID="newsDetail" runat="server" DataSourceID="SqlDataSourceNews"
                AutoGenerateRows="False" DataKeyNames="id" 
                OnItemUpdating="NewsDetailItemUpdating" OnItemCreated="NewsDetailItemCreated"
                OnItemDeleted="NewsDetailItemDeleted" OnItemInserted="NewsDetailItemInserted"
                OnItemInserting="NewsDetailItemInserting" OnItemUpdated="NewsDetailItemUpdated"
                DefaultMode="Insert">

                <Fields>
                    <asp:TemplateField FooterText="show at statpage" HeaderText="view" SortExpression="view">
                       ...
                    </asp:TemplateField>
                    <asp:BoundField DataField="headline" HeaderText="Headline" SortExpression="headline">
                    </asp:BoundField>
                    <asp:TemplateField HeaderText="Text">
                        <ItemTemplate>
                            <asp:Label ID="post" runat="Server" Text='<%# Eval("post") %>' OnPreRender="PostLabelPreRender" />
                        </ItemTemplate>
                        <InsertItemTemplate>
                            <asp:TextBox ID="postTextBox" runat="server" Text='<%# Bind("post") %>' TextMode="MultiLine"
                                Width="500px" Height="300px" />
                        </InsertItemTemplate>
                        <EditItemTemplate>
                            <asp:TextBox ID="postTextBox" runat="server" Text='<%# Bind("post") %>' TextMode="MultiLine"
                                Width="500px" Height="300px" />
                        </EditItemTemplate>
                    </asp:TemplateField>

和代码

    protected void NewsDetailItemUpdating(object sender, DetailsViewUpdateEventArgs e)
    
        // Iterate though the values entered by the user and html encode 
        // the values. This helps prevent malicious values from being 
        // stored in the data source.
        for (int i = 0; i < e.NewValues.Count; i++)
            if (e.NewValues[i] != null)
                e.NewValues[i] = Server.HtmlEncode(e.NewValues[i].ToString());
    

    protected void NewsDetailItemInserting(object sender, DetailsViewInsertEventArgs e)
    
        for (int i = 0; i < e.Values.Count; i++)
            if (e.Values[i] != null)
                e.Values[i] = Server.HtmlEncode(e.Values[i].ToString());
    

    protected void NewsDetailItemUpdated(object sender, DetailsViewUpdatedEventArgs e)
    
        newsList.DataBind();
    

    protected void NewsDetailItemInserted(object sender, DetailsViewInsertedEventArgs e)
    
        newsList.DataBind();
    

    protected void NewsDetailItemDeleted(object sender, DetailsViewDeletedEventArgs e)
    
        newsList.DataBind();
    

    protected void NewsDetailItemCreated(object sender, EventArgs e)
    
        newsList.DataBind();
    
答案

您遇到的问题是,在您的一个文本框中,您放置了html标记或仅<>符号,.net框架将其视为潜在的危险脚本。这是为了防止人们将恶意脚本标签放置在输入字段中。

您可以通过输入页面指令ValidateRequest="false"来解决此问题,您还必须将其放置在web.config <httpRuntime requestValidationMode="2.0" ... />

另一答案

尝试使用此web.config文件添加或设置httpRuntime requestValidationMode为

<httpRuntime requestValidationMode="2.0"/>

以上是关于从客户端检测到潜在危险的Request.Form值的主要内容,如果未能解决你的问题,请参考以下文章

从客户端中检测到有潜在危险的 request.form值[解决方法]

从客户端检测到潜在危险的 Request.Form 值

如何处理“从客户端检测到潜在危险的 Request.Form 值”?

从客户端中检测到有潜在危险的 Request.Form 值

从客户端中检测到有潜在危险的 request.form值[解决方法]

处理从客户端中检测到有潜在危险的 Request.Form值