3

我正在向 Body=%3Ch2%3E (Body=<h1>) servicestack 休息端点提交一个包含值的查询字符串。这导致:

从客户端检测到潜在危险的 Request.QueryString 值 (Body=\"<h2>\")。

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

[AllowHtml] 公共字符串正文 { 获取;放; }

这样做了,但错误仍然存​​在。怀疑是服务堆栈没有正确参与验证过程,因此通过创建具有相同模型的纯 MVC 4 控制器进行测试,并且效果很好。

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

4

1 回答 1

9

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

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

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

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

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

/hello这将禁用应用程序中所有端点的请求验证。例如/hello?Body=%3Ch2%3E将工作但/bar?Body=%3Ch2%3E不会工作。

您可以在following MSDN article.

如果您是自托管 ServiceStack 服务,显然您不必担心这一点。

于 2012-12-28T22:43:22.687 回答