-1

アプリケーションの開発にasp.net mvc3を使用しています。

私は自分のページを aniforgerytoken によって CSRF に対して保護しています。

データグリッドの上に [削除] ボタンがあるとします。ユーザーがボタンをクリックすると、ajax 呼び出しは、選択したアイテムの ID を国/削除アクションなどに投稿します。

問題は、ユーザーがリクエストの ID を変更しようとする可能性があることです (ソース コード ページを調べると、$.post(...) を使用します)。そのため、選択されていない国を削除できます (最悪の場合、彼にはそれらを削除する権限がありません)

これに対してページを保護するにはどうすればよいですか? ユーザーが本当にアイテムを削除する権限を持っている場合、削除アクションをチェックしたくありません。

ajax 呼び出しハッシュについて聞いたことがありますが、MVC で役立つチュートリアルやそれを行うための何かが見つかりませんでした。

4

2 に答える 2

0

クライアント側で何かをする必要はないと思います。代わりに、サーバー側で、ユーザーが削除対象として選択された国を削除する権限を持っていることを確認し、削除する権限を持っている国のみを削除する必要があります。

于 2013-10-21T17:34:46.677 に答える
0

投稿を使用している場合は、以下を使用してください

[Authorize]
[ValidateAntiForgeryToken]

get use を使用している場合

[Authorize]

このカスタム属性を以下で使用することもできます

public class HttpAjaxRequestAttribute : ActionMethodSelectorAttribute
{
    public override bool IsValidForRequest(ControllerContext controllerContext, System.Reflection.MethodInfo methodInfo)
    {
        if (!controllerContext.HttpContext.Request.IsAjaxRequest())
        {
            throw new Exception("This action " + methodInfo.Name + " can only be called via an Ajax request");
        }
        return true;
    }
}

次に、以下のようにアクションを装飾します

[Authorize]
[HttpAjaxRequest]

public ActionResult FillCity(int State)
{
    //code here
}

これで問題が解決する場合は、忘れずに「マーク/チェック」してください。

于 2017-08-25T07:33:44.503 に答える