有潜在危险请求servicestack

Mil*_*rov 3 servicestack asp.net-mvc-4

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

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

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

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

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

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

Dar*_*rov 9

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

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

<system.web>
    <httpRuntime requestValidationMode="2.0" />
    ...
</system.web>
Run Code Online (Sandbox Code Playgroud)

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

<location path="hello">
    <system.web>
        <httpRuntime requestValidationMode="2.0" />
    </system.web>
</location>  
Run Code Online (Sandbox Code Playgroud)

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

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

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