【问题标题】:Request validation in ASP.NET 4.5 RC in Umbraco在 Umbraco 的 ASP.NET 4.5 RC 中请求验证
【发布时间】:2012-07-20 09:37:57
【问题描述】:

我的 ASP.NET 4.5 RC WebForms 应用程序中有一个文本框,它需要接受潜在的 HTML。

我对此进行了研究,并采取了以下措施来让这种情况发生: 在 web.config 中,我已经适当地设置了 requestValidationMode 和 validateRequest。

<httpRuntime requestValidationMode="2.0" enableVersionHeader="false"/> 
<pages enableEventValidation="false" validateRequest="false">

在控件本身我添加了属性 ValidateRequestMode="Disabled"

<asp:TextBox ID="txtBio" runat="server" TextMode="MultiLine" Height="100" Width="300" ValidateRequestMode="Disabled" />

但是,我仍然收到错误:

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

对于我可以尝试的其他方法,是否有人有任何其他想法?我认为这是 ASP.NET 4.5 RC Web 堆栈中的错误,但我可能错了。感觉就是这样,因为我真的没有想法。好像我现在已经按下了每个开关。

另外,我更愿意为除此项目之外的所有地方保留 requestValidation,但是,如果我可以完全关闭它,那将是一个好的开始。

非常感谢

【问题讨论】:

    标签: asp.net .net umbraco .net-4.5 asp.net-4.5


    【解决方案1】:

    尝试在页面顶部的属性中添加validateRequest="false",如下所示:

    %@ Page Language="C#" AutoEventWireup="true" CodeBehind="page.aspx.cs" validateRequest="false" Inherits="Project.UI.page" %>
    

    但请注意检查 html 是否存在用户在关闭验证时可能添加的任何恶意脚本。

    更新: 尝试将此添加到您的用户控件代码隐藏中。

    protected void Page_Init(object sender, EventArgs e)
    {
        try
        {
            ((umbraco.UmbracoDefault)this.Page).ValidateRequest = false;
        }
        catch { }
    } 
    

    【讨论】:

    • 抱歉,这是一个 Umbraco 安装,没有页面。只是母版页和动态插入的用户控件:-(
    • @Boomerangertanger 嗯,这是我唯一的想法 xD 但是你应该用标签 Umbraco 重新标记你的问题,这样有类似问题的人可以帮助你。如果有人需要,我会留下这个答案..
    • 目前无法找到 umbraco.UmbracoDefault 的程序集引用。
    • @Boomerangertanger Np,我花了一段时间才想起我是怎么做到的,小心 XSS!
    猜你喜欢
    • 1970-01-01
    • 2019-08-03
    • 2018-04-19
    • 2010-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多