有潜在危险请求servicestack

时间:2012-12-28 22:16:10

标签: asp.net-mvc-4 servicestack

我正在提交包含值的查询字符串 Body=%3Ch2%3E (Body=<h1>) 到服务堆栈休息端点。结果是:

  

从客户端检测到潜在危险的Request.QueryString值(Body = \“&lt; h2&gt; \”)。

我知道在MVC 4中你可以允许特定字段的Html内容,如果你用[AllowHtml]装饰模型中的字段,如下所示:

  

[AllowHtml]   public string Body {get;组; }

那样做了,但错误仍然存​​在。有人怀疑服务堆栈在验证过程中没有正确参与,所以通过创建一个具有相同模型的纯MVC 4控制器进行测试,并且工作正常。

但是我需要一个ServiceStack解决方案。他们的文档很薄,谷歌搜索无处可寻。

1 个答案:

答案 0 :(得分:9)

看起来您正在ASP.NET应用程序中托管ServiceStack服务。

您可以将以下内容添加到web.config文件的<system.web>部分,以便为整个应用程序禁用请求验证:

<system.web>
    <httpRuntime requestValidationMode="2.0" />
    ...
</system.web>

如果您只想为特定端点禁用请求验证,而不是整个应用程序使用web.config中的<location>标记:

<location path="hello">
    <system.web>
        <httpRuntime requestValidationMode="2.0" />
    </system.web>
</location>  

这将禁用应用程序中所有/hello个端点的请求验证。例如,/hello?Body=%3Ch2%3E可以正常工作,但/bar?Body=%3Ch2%3E将无效。

您可以在following MSDN article中了解有关ASP.NET中请求验证的更多信息。

显然,如果您自行托管ServiceStack服务,则不应该担心这一点。