我在閱讀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 –