0

ビューでHTML入力要素を使用するASP.NETMVC4プロジェクトがあります。この要素の値は、JQueryのpost呼び出しを介してサーバーに送信されます。Razor構文を使用しておらず、Controllerアクションに特別なコードを手動で追加していません。

postパラメータの1つをHTMLコードに設定すると、呼び出しは失敗し、500内部サーバーエラーが返されます。私の質問は、XSS攻撃を防ぐために、JQueryはその場で呼び出しを終了するのですか、それともASP.NET MVCですか?次に、この機能をオフにするにはどうすればよいですか?

4

1 に答える 1

3

JQueryはその場で呼び出しを終了しますか、それともASP.NET MVCですか?

そのなかで何も。それはASP.NETエンジンです。この機能は、ASP.NET MVCが存在するずっと前からASP.NETに存在し、ASP.NET MVCはASP.NETの上に構築されているため、それを継承していました。

次に、この機能をオフにするにはどうすればよいですか?

[AllowHtml]ビューモデルプロパティを装飾することにより、次の属性でこの値にバインドします。

public class MyViewModel
{
    [AllowHtml]
    public string Html { get; set; }
}

そして今、あなたは次のコントローラーアクションを持つことができます:

[HttpPost]
public ActionResult SomeAction(MyViewModel model)
{
    ...
}

jQuery.ajaxを使用して呼び出し、任意のHTMLコンテンツを送信していること。

$.ajax({
    url: '@Url.Action("SomeAction")',
    type: 'POST',
    data: { html: '<div>Hello World</div>' },
    success: function(result) {

    }
});

明らかに、これを行うことで、ユーザーがスクリプトやすべての危険なものを含む任意のHTMLをサイトに送信できるという事実を完全に認めます。したがって、XSS攻撃を防ぐために、この値を適切にエンコードしてから、ページに表示し直してください。

于 2012-10-02T06:11:37.767 に答える