0

文字列パラメーターを使用するASP.NETWebサービス(asmx)関数があります。組み込みのリクエスト検証はHTMLタグをキャッチする必要があり、自動生成されたlocalhostテストページを使用する場合、またはdataTypeがjson(ValidateRequest = "true")に設定されていない場合はjQueryのajax/postで機能します。

WithdataType:"json" HttpRequestValidationExceptionはトリガーされません:

$.ajax({
    type: "POST",
    url: "/my.asmx/SetName",
    data: '{"name":"' + $("#name").val() + '"}',
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    async: false
});

削除contentTypedataTypeて期待どおりの結果が得られた場合HttpRequestValidationException

これは私のwsを脆弱なままにします。残念ながら、WCFはオプションではありません。

4

1 に答える 1

0

これは仕様によるものです。HttpRequest の Path、PathInfo、RawUrl、Cookie、Form、QueryString、および File のみが検証されます。カスタムリクエストバリデーターを使用すると、ヘッダーも検証される場合があります。

contentType を削除したときにリクエストの検証が行われる理由は、JQuery がapplication/x-www-form-urlencodedフォーム ポスト (HttpRequest.Form)にデフォルト設定するためです。

于 2013-11-27T03:51:40.937 に答える