2017-07-25 72 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。 –

相關問題