1

Ajax.ActionLink私の ASP.NET MVC (v1) ページには、破壊的な操作を実行する多くの があります。この場合は HttpMethod を に設定しているため、これは「合法」DELETEであり、破壊的ではありませんGET

ただし、私の質問は、この操作に対する XSRF 攻撃を軽減して、他のサイトがこの同じ AjaxDELETE要求を作成して別のサイトからユーザー データを削除できないようにする方法です。この ActionLink は、次を含むフォーム内に表示されます<%= Html.AntiForgeryToken() %>が、ActionLinks はフォームを投稿しないため、偽造防止トークンはコントローラーに送られず、検証できません。

4

2 に答える 2

1

クロスサイト リクエスト フォージェリ攻撃を防ぐには、別のサイトからのリクエストをブロックする必要があります。asp.net では、Request.UrlReferrer がホスト名からのものではないかどうかを確認することでこれを行うことができます。ajax リクエストが別のサーバーから発信された場合は、ajax リクエストを無視する必要があります。リファラーが null の場合も、リクエストを無視する必要があります。

于 2010-01-07T06:25:56.273 に答える
0

このリンクは 1 つのソリューションをカバーしていますhttp://tpeczek.com/2010/05/using-antiforgerytoken-with-other-verbs.html

ただし、最も理想的な解決策は、actionlink を使用するときに Anti Forgery トークンをクエリ文字列に追加することです。そのため、それを追加する独自の ActionLink 拡張メソッドを作成してみます。

最後に、ValidateAntiForgeryTokenAttribute から継承し、Request.Form と Request.QueryString の両方で偽造トークンを受け入れる属性を記述します。

于 2010-10-21T14:52:42.307 に答える