我在阅读POST被认为是安全的,并且没有得到,并且我们应该在每个控制器的每个动作中实现[ValidateAntiForgeryToken]。ValidateAntiForgeryToken是否使用POST自动实现?
问题是:当我使用[POST]时,是否需要使用[ValidateAntiForgeryToken]数据注释?
我在阅读POST被认为是安全的,并且没有得到,并且我们应该在每个控制器的每个动作中实现[ValidateAntiForgeryToken]。ValidateAntiForgeryToken是否使用POST自动实现?
问题是:当我使用[POST]时,是否需要使用[ValidateAntiForgeryToken]数据注释?
它默认关闭。
这有很好的理由。并非每一个岗位都有来自一个形式(尤其如此,因为你的问题被标记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">
我有一个网络API。我的客户是Angular4。 –
@JohnDoe对你有好处。你为什么用'asp.net-core-mvc'标记你的问题? – Alex
Web API使用MVC。 –
不,它没有自动实现,你需要在你的ActionResult上放置一个属性。检查此答案的更多细节https://stackoverflow.com/a/13622061/713789 – Adrian
尚未在官方稳定的分支,但propably它将从2.0 https://github.com/aspnet/Docs/issues/3688 –