我有一个用户控件,我传入的查询字符串.net似乎认为很危险..我已经放入了我的web.config
<httpRuntime requestValidationMode="2.0" enableVersionHeader="false" maxUrlLength="10999" maxQueryStringLength="2097151"/>
<security>
<requestFiltering>
<requestLimits maxUrl="10999" maxQueryString="2097151" />
</requestFiltering>
</security>
我的用户控制是:
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="Member.ascx.cs" Inherits="DOM.Umbraco.Web.usercontrols.Members" %>
但仍然没有希望..我怎么能得到这个以允许这个查询字符串?
由于 DOM
答案 0 :(得分:0)
您可以使用此web.config设置禁用请求验证
<configuration>
<system.web>
<pages validateRequest="false" />
</system.web>
</configuration>
考虑到根本没有验证可能导致安全问题。您需要将内置验证替换为某些自定义代码以从客户端清除数据。
如果您只想将此设置限制为使用用户控件的页面,您可以使用此页面指令
<@ Page validateRequest="false" %>
答案 1 :(得分:0)
覆盖请求验证程序并允许您需要的字符。要小心,如果要重新显示数据,它将包含原始内容,这可能是危险的。即脚本标签
public class CustomRequestValidator : System.Web.Util.RequestValidator
{
protected override bool IsValidRequestString(HttpContext context, string value, RequestValidationSource requestValidationSource, string collectionKey, out int validationFailureIndex)
{
validationFailureIndex = 0;
if (requestValidationSource == RequestValidationSource.Form)
{
value = value.Replace("<", "").Replace(">", "");
}
return base.IsValidRequestString(context, value, requestValidationSource, collectionKey, out validationFailureIndex);
}
}