CA5363:请勿禁用请求验证

属性
规则 ID CA5363
标题 请勿禁用请求验证
类别 安全性
修复是中断修复还是非中断修复 非中断
在 .NET 8 中默认启用

原因

对于类或方法,属性 ValidateInput 设置为 false

规则说明

请求验证是 ASP.NET 中的一项功能,可检查 HTTP 请求并确定这些请求是否包含可能导致跨站点脚本编写等注入攻击的潜在危险内容。

如何解决冲突

ValidateInput 属性设置为 true 或将其完全删除。 或者,使用 AllowHTMLAttribute 允许在输入的特定部分中使用 HTML。

何时禁止显示警告

如果传入 HTTP 请求中的所有有效负载来自受信任的实体,并且在传输之前或期间无法被对手篡改,则可以禁止显示此冲突。

抑制警告

如果只想抑制单个冲突,请将预处理器指令添加到源文件以禁用该规则,然后重新启用该规则。

#pragma warning disable CA5363
// The code that's violating the rule is on this line.
#pragma warning restore CA5363

若要对文件、文件夹或项目禁用该规则,请在配置文件中将其严重性设置为 none

[*.{cs,vb}]
dotnet_diagnostic.CA5363.severity = none

有关详细信息,请参阅如何禁止显示代码分析警告

伪代码示例

冲突

下面的伪代码示例演示了此规则可检测的情况。 这样会禁用输入验证。

using System.Web.Mvc;

class TestControllerClass
{
    [ValidateInput(false)]
    public void TestActionMethod()
    {
    }
}

解决方案

using System.Web.Mvc;

class TestControllerClass
{
    [ValidateInput(true)]
    public void TestActionMethod()
    {
    }
}