2013-01-05 13 views
5

JQueryの$ .Ajax(..)を使用して、マークアップを含むJSONオブジェクトをMVCアクションメソッドに投稿すると、コンテンツがASP.Netのリクエストによって拒否されないことに驚きました検証。htmlでAjax JSONベースの投稿を拒否する

要求の検証がJSON投稿に適用されない理由はありますか?次のように定義された

は、マークアップは...サーバーによって拒否

$.ajax({ 
     url: '/Controller/Action', 
     data: JSON.stringify({data:data}), 
     type: "POST", 
     dataType: "json", 
     contentType: "application/json", 
     }); 

は、それが

私は

MVC 3.0 .NET 4.0を使用していますタイプJSONのポストに結びついているように思えていません

私は、データベースにコメントを保存する機能を作成しています。

さまざまなプロパティ(例:commentText)を使用してJSONオブジェクトを投稿しています 何らかの理由で、何らかの理由でマークが含まれていると投稿を拒否しない<div></div>など

動作を説明するように見えるここに記事を見つけた:

http://weblogs.asp.net/imranbaloch/archive/2011/05/23/security-issue-in-asp-net-mvc3-jsonvalueproviderfactory.aspx

+0

手がかりがあるようですか?要求の検証が4.0で変更されたためです。 – Venemo

+0

質問が更新されました。私は.Net 4.0を使用しています – TGH

答えて

3

あなたが使用しているASP.NETのバージョンを教えてもらえここ http://weblogs.asp.net/imranbaloch/archive/2011/05/23/security-issue-in-asp-net-mvc3-jsonvalueproviderfactory.aspx

+0

これは答えではなく、事実の観察と緩和のための提案です。なぜアプリケーション/ jsonがASP.NET RequestValidationの対象ではないのかという疑問は答えられていません。 –

+0

@Andreas、あなたのコメントは間違いなく私を答えに近づけません。ポリシングを保存し、役立つものを提案してください。 – Brian

+0

こんにちは@ブライアン、私の意図は、私は実際の答えに興味があるので、再度質問を開いてTGHを取得することでした。私はその意図をより良く表現できる(そしてTGHに指示した)ことができたことを実感します。申し訳ありませんが、私はそのようなSOのユーザーとして遭遇することを嫌っていたポリシングのサウンド。 –

1

私はあなたが要求の検証の話をしていると思いますか?それはMVC上にあるので、あなたのJSON文字列はasp.netによって脅威とみなされるべきではありません。デフォルトではマークアップを含むJSON文字列を拒否するかどうか覚えていません。ここではそれについて

さらに詳しい情報:http://weblogs.asp.net/imranbaloch/archive/2011/02/19/understanding-request-validation-in-asp-net-mvc-3.aspx

1

私はあなたのサーバーに渡すデータがどのように見えるかを正確に知りませんが、今私はそれは単なる文字列値「XYZ」であることを前提としています。

{「データ」:「テスト」}

これは完全にOKであり、ASP.NETによって識別された潜在的スレッドを表していない。この場合、サーバは、以下のPOSTデータを取得します。

PS:あなたがデータとして他の値を使用している場合、全体的な話は...異なる場合があります

+0

はい、smarkupを含むJSONオブジェクトです

TGH

0

要求の検証は、データアノテーションを使用してモデルで動作します。モデルでHTMLメイク入力を有効または無効にすることができます。あなたは[AllowHtml]を使ってあなたのモデルでそれを行うことができます。その後、ユーザーが通常のフィールドにHTMLを入力すると、Model.IsValidプロパティを使用してエラーをチェックできます。

関連する問題