2017-07-25 71 views
1

我在阅读POST被认为是安全的,并且没有得到,并且我们应该在每个控制器的每个动作中实现[ValidateAntiForgeryToken]。ValidateAntiForgeryToken是否使用POST自动实现?

问题是:当我使用[POST]时,是否需要使用[ValidateAntiForgeryToken]数据注释?

+1

不,它没有自动实现,你需要在你的ActionResult上放置一个属性。检查此答案的更多细节https://stackoverflow.com/a/13622061/713789 – Adrian

+0

尚未在官方稳定的分支,但propably它将从2.0 https://github.com/aspnet/Docs/issues/3688 –

回答

3

它默认关闭。
这有很好的理由。并非每一个岗位都有来自一个形式(尤其如此,因为你的问题被标记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"> 
+0

我有一个网络API。我的客户是Angular4。 –

+0

@JohnDoe对你有好处。你为什么用'asp.net-core-mvc'标记你的问题? – Alex

+0

Web API使用MVC。 –

相关问题