我正在阅读POST被认为是安全的并且没有GET,我们应该在每个控制器的每个动作中实现[ValidateAntiForgeryToken]。
问题是:当我使用[POST]时,是否需要使用[ValidateAntiForgeryToken]数据注释?
答案 0 :(得分:3)
默认情况下是关闭的
这是有充分理由的。并非每个POST都必须来自一个表单(尤其是因为您的问题被标记为asp.net-core
)
您应该使用[ValidateAntiForgeryToken]
[ValidateAntiForgeryToken]
public IActionResult Post(Model model)
{
// ... etc
}
如果您正在使用表单标记帮助程序,它会自动将防伪标记添加到<form>
标记中。
生成的标记类似于:
<form action="/MyController" method="post">
<input name="__RequestVerificationToken" type="hidden" value="fhTFfhkKNsdfhYazFtN6c4YbZAmsEwG0srqlUqqloi/OIJOIJoijojhishg" />
<!-- rest of form here -->
</form>
注意:您还可以使用表单助手标记手动启用/禁用__RequestVerificationToken
生成:
<form
asp-controller="MyController"
asp-action="MyAction"
asp-antiforgery="false"
method="post">