1

Asp.Net MVC 3 + Razor + MathJax を使用して数学サイトを開発しています。MathJax は、Web ブラウザーで TeX または LaTeX コードをレンダリングするための JavaScript ライブラリーです。また、TeX や LaTeX コードは、インライン数学$y=mx+c$や表示された数学などの数学コンテンツを表します\[y=mx+c\]

現在、私のサイトは入力を受け入れることができます$x<y$$x<y>z$ただし、この入力は XSS および XSRF に対して脆弱であるとフレームワークが見なすため、受け入れられません。

手短に言えば、私が望むことを達成するために何をすべきか、しかしそれはセキュリティの脆弱性を開くことはありません.

4

2 に答える 2

3

ASP.NET MVC 3 では、この入力を受け入れる必要があるモデルのプロパティを属性で装飾でき[AllowHtml]ます。この方法では、コントローラー アクション全体の入力検証を無効にする必要はありません。これは、以前は[ValidateInput]属性で装飾することによって行われていました。だからあなたのモデルで

public class MathematicsViewModel
{
    public int Id { get; set; }
    public string Name { get; set; }

    [AllowHtml]
    public string MathematicFormula { get; set; }
}

次に、コントローラーのアクションを実行します。

[HttpPost]
public ActionResult(MathematicsViewModel model)
{
    // model.MathematicFormula will now accept input like  $x<y>z$
    ...
}

ビュー内にMathematicFormulaは、ユーザーがそれらの文字を入力できるという名前のテキストボックスを含めることができ、例外は発生しません。

また、web.config で次を設定することを忘れないでください。そうしないと、この属性は .NET 4.0 (ASP.NET MVC 3 が使用するもの) では効果がありません。

<httpRuntime requestValidationMode="2.0"/>
于 2011-03-03T07:22:34.827 に答える
2

アクションメソッドでValidateInputAttributeを使用する必要があります

[ValidateInput(false)]
public ViewResult Create() {

}

編集

また、.net 4 を使用する場合は、次<httpRuntime requestValidationMode="2.0"/>のように追加することを忘れないでください。web.config

<configuration>
<system.web>
<httpRuntime requestValidationMode="2.0"/>
</system.web>
</configuration>
于 2011-03-03T07:11:00.773 に答える