我仍然不明白防僞令牌在MVC中是如何工作的。 來自MSDN。手動設置cookie值以禁用防僞標記?
防僞令牌
爲了防止CSRF攻擊,ASP.NET MVC使用防僞標記,也稱爲請求驗證令牌。
- 客戶端請求一個包含表單的HTML頁面。
- 服務器在響應中包含兩個令牌。一個令牌作爲cookie發送。另一個放置在隱藏的表單字段中。令牌是隨機生成的,因此對手無法猜測值。
- 當客戶端提交表單時,它必須將兩個令牌都發送回服務器。客戶端將cookie標記作爲cookie發送,並在表單數據內發送表單標記。 (瀏覽器客戶端在用戶提交表單時自動執行此操作。)
- 如果請求不包括這兩個標記,則服務器將禁止該請求。
下面是一個HTML表單的一個隱藏的表單令牌的例子:
<form action="/Home/Test" method="post">
<input name="__RequestVerificationToken" type="hidden"
value="6fGBtLZmVBZ59oUad1Fr33BuPxANKY9q3Srr5y[...]" />
<input type="submit" value="Submit" />
我的問題是,既然我們可以通過查看源代碼很容易地找到隱藏的標記值( F12在任何瀏覽器中)。然後,我們可以通過轉到開發工具(Ctrl-Shift-J或工具 - >開發工具) - >控制檯手動設置cookie,然後輸入javascript命令:
document.cookie =「keyofcookie = valueofcookie」 ?
然後我們手動設置相同的令牌因此禁用防僞技術?
我沒有強大的餅乾。那麼你怎麼知道這個cookie是HttpOnly? – Bigeyes
像你一樣,我也在互聯網上閱讀。但是現在,既然你問了,這裏是實際的微軟文件源代碼的鏈接。這裏是關於開源的MS鏈接。 https://blogs.msdn.microsoft.com/henrikn/2012/08/17/getting-started-with-asp-net-web-stack-source-on-codeplex/。檢查HttpOnly是否爲true。 http://aspnetwebstack.codeplex.com/SourceControl/changeset/view/9a83b63f3f889e3f2c979274fe3e8f7610e06b98#src/System.Web.WebPages/Helpers/AntiXsrf/AntiForgeryTokenStore.cs – Amit