CA5395:缺少操作方法的 HttpVerb 属性
属性 | 值 |
---|---|
规则 ID | CA5395 |
标题 | 缺少操作方法的 HttpVerb 属性 |
类别 | 安全性 |
修复是中断修复还是非中断修复 | 非中断 |
在 .NET 9 中默认启用 | 否 |
原因
未为操作方法显式指定 HTTP 请求的类型。
规则说明
创建、编辑或以其它方式修改数据等所有操作方法都需要使用防伪特性来保护,以避免受跨网站请求伪造攻击的影响。 执行 GET 操作应是没有副作用且不会修改持久数据的安全操作。
如何解决冲突
使用 HttpVerb
属性标记操作方法。
何时禁止显示警告
在以下情况下,可安全地禁止显示此规则的警告:
- 确定操作方法中未发生修改操作。 或者,它根本就不是操作方法。
- 采用除使用防伪造令牌属性之外的其他解决方案来缓解 CSRF 漏洞。 有关详细信息,请参阅在 ASP.NET Core 中预防跨网站请求伪造 (XSRF/CSRF) 攻击。
抑制警告
如果只想抑制单个冲突,请将预处理器指令添加到源文件以禁用该规则,然后重新启用该规则。
#pragma warning disable CA5395
// The code that's violating the rule is on this line.
#pragma warning restore CA5395
若要对文件、文件夹或项目禁用该规则,请在配置文件中将其严重性设置为 none
。
[*.{cs,vb}]
dotnet_diagnostic.CA5395.severity = none
有关详细信息,请参阅如何禁止显示代码分析警告。
伪代码示例
冲突
using Microsoft.AspNetCore.Mvc;
[ValidateAntiForgeryToken]
class BlahController : Controller
{
}
class ExampleController : Controller
{
public IActionResult ExampleAction()
{
return null;
}
}
解决方案
using Microsoft.AspNetCore.Mvc;
[ValidateAntiForgeryToken]
class BlahController : Controller
{
}
class ExampleController : Controller
{
[HttpGet]
public IActionResult ExampleAction()
{
return null;
}
}