2

コントローラーに、削除アクションを実行するアクション メソッドがあります。

private ActionResult Delete(int id)
{           
     if (delete(id))
     {
          return Content("success");
     } 
     else 
     {
          return Content("something went wrong!");
     }

}

次のように、jQuery ajax を使用してビューから呼び出します。

jQuery('#NotificationArea').load('/MyController/Delete/5');

これを行うには、コントローラー アクションを global.asax に登録する必要があります。

routes.MapRoute(
   "Delete",
   "MyController/Delete/{id}",
   new { controller = "MyController", action = "Delete" }
);       

しかし、誰もがブラウザから直接このアクションを呼び出し、ID を変更して別の要素を削除できるため、危険であることに気付きました。

myDomain.com/MyController/Delete/20

この潜在的なセキュリティの問題を回避するにはどうすればよいですか?

4

2 に答える 2

1

1つのオプションは、削除機能の上に[HttpPost]属性を使用することです。このように、ロードされたページがそのデータを投稿し、そのURLを直接ヒットすることが機能しない場合にのみ機能します。

同じページからの投稿のみが有効になるように、ページに配置できるものもあります。いくつかの属性。それについてお返しさせてください。

于 2012-07-20T13:30:38.780 に答える
1

基本的に、Delete アクション メソッドを AcceptVerbs 属性で装飾できます。詳細については、この記事をお読みください。

于 2012-07-20T13:35:21.607 に答える