1. ホーム
  2. c#

[解決済み】なぜJsonRequestBehaviorが必要なのでしょうか?

2022-04-15 20:24:09

質問

なぜ Json Request Behavior が必要ですか?

を制限したい場合 HttpGet リクエストをアクションに送ることができます。 [HttpPost] 属性

[HttpPost]
public JsonResult Foo()
{
    return Json("Secrets");
}

// Instead of:
public JsonResult Foo()
{
    return Json("Secrets", JsonRequestBehavior.AllowGet);
}

なぜそうしないのか [HttpPost] 十分ですか?

なぜフレームワークがバグるのか? JsonRequestBehavior.AllowGet について JsonResult を追加しています。 HttpPost 属性を持つ。

どのように解決するのですか?

MVCのデフォルトは DenyGet を許可すると、JSON リクエストを含む非常に特殊な攻撃から保護される可能性が高くなります。 HTTP GET の露出は、その発生を許可する前に考慮されます。

これは、手遅れになる可能性のある後発組とは対照的です。

注意: アクションメソッドが機密データを返さないのであれば、取得を許可しても問題ないはずです。

Wrox ASP.NET MVC3 bookからさらに詳しい情報を得ることができます。

デフォルトでは、ASP.NET MVCフレームワークでは、次のようなレスポンスはできません。 HTTP GET リクエストに JSON ペイロードを指定した場合。JSON を送信する必要がある場合 GET に対する応答として、この動作を明示的に許可する必要があります。 JsonRequestBehavior.AllowGetをJsonの第2パラメータとして使用します。 メソッドを使用します。しかし、悪意のあるユーザがアクセスする可能性があります。 JSONハイジャックとして知られるプロセスを通じて、JSONペイロードを提供します。あなたは GETリクエストでJSONを使用して機密情報を返したい。この点については のPhilの投稿を参照してください。 http://haacked.com/archive/2009/06/24/json-hijacking.aspx/ または このSOの記事

Haack, Phil (2011). プロフェッショナル ASP.NET MVC 3 (Wrox Programmer to Wrox) Programmer) (Kindle Locations 6014-6020). Wrox. Kindle版.

関連するStackOverflowの質問

最近のブラウザ(Firefox 21、Chrome 27、IE 10以降)では、この脆弱性は解消されました。