XSSを気にせずに符号化された文字列を保存できるように、私はAntiXssEncoder.HtmlEncode
を使用して悪質な入力から文字列プロパティをサニタイズするモデルバインダを作成しました。だから私はこの仕事をしましたが、私が抱えている唯一の問題は、アンチXssで文字列プロパティをデコードする方法です。Viewモデルをオーバーライドして文字列をサニタイズする
私はページが<test> me
にテキストの代わりに、上の画像をレンダリングする:下記参照として
ページでは、このテキストをレンダリングします。私はこれを行うためにいくつかのリソースを調べようとしましたが、ビュー内の文字列に拡張メソッドを追加することでこれを実現できます。しかし、これは退屈なことです。私は、ページ上にレンダリングする前に、モデル内の文字列プロパティを自動的にサニタイズする何かをグローバルに設定したいと思います。
誰もが自動的に文字列サニタイズを実装する方法を提案したり、ビューモデルをオーバーライドしたり、文字列のプロパティをチェックしたり、ページをレンダリングする前にサニタイズしたりできますか?
更新: または私はActionResult
public ActionResult Test()
{
return View(model);
}
モデルバインダーの実装では、文字列のプロパティをエンコードするだけで、モデルで文字列プロパティをグローバルにデコードしてからページに表示することができます。私はあなたの3つのソリューションを使用することができることを知っているが、それは私が避けているそれぞれのプロパティにそれらを定義しなければならないことを意味するだろう。 – rpmansion
すべての文字列を 'IHtmlString'として定義するか、または何らかの方法でひらめきビューエンジンをオーバーライドする以外に、これをグローバルに行う方法を見つけることができません。私は実際のレンダリング部分の実装を見つけることができませんでした(恐ろしく複雑になると思われます)。モデルバインディングの一部として文字列をデコードするアクションをアトリビュートに設定する(またはグローバルアトリビュートを定義する)ことができます。これについてはこちらをご覧くださいhttps://github.com/CypressNorth/.NET-WebApi-HttpStringDecodeFilter – NibblyPig
Iそれを見た。私はそれを試みようとしていた。この技法を使ってこの進展がどのように進行するか見てみましょありがとう – rpmansion