3

MVC 2 に Html.Encode() 文字列への魔法の既存のコードがあり、段落記号や改行などの特定の html マークアップを許可しますか? (Linq から SQL データベース フィールドへ)

効果を達成するための恐ろしいコード例:

Html.Encode(Model.fieldName).Replace("&lt;br /&gt;", "<br />")

何かをオーバーロードして、許可された html タグでいっぱいの配列 (またはオブジェクト) を渡すことは、本当に素晴らしいことです。

4

3 に答える 3

5

XSS のセキュリティ ホールをうっかり開いてしまう可能性があるため、正規表現に基づいて独自のホワイトリストを作成することはお勧めできません。

Sanderson の著書「Pro ASP.NET MVC3 Framework」から: 「...唯一実行可能な軽減策は、厳格なホワイトリスト ベースのフィルタリングです。HTML Agility Packのようなライブラリを使用して、ユーザーが指定したマークアップに、明示的に指定したタグのみが含まれるようにします。許可する。"

Sanderson は、正規表現アプローチを使用する場合にテストする必要がある、さまざまな XSS 手法を示すサイトへのリンクを提供し続けています。http://ha.ckers.org/xss.htmlをご覧ください

于 2012-01-17T06:54:22.563 に答える
4

このために ASP.NET や MVC に組み込まれているものは何もありませんが、正規表現などを使用して独自のホワイトリスト ベースのものを作成することはそれほど難しくありません。これはジェフが書いたものですが、端がかなり荒いですが...

于 2010-03-29T05:15:27.177 に答える
2

何も考えられませんが、許可する項目のパラメーター/リストを追加できる拡張メソッドを作成できると思います。

Html.Encode(Mode.fieldName, List<items> Myitems);

許容されるタグを&lt;etc に変更し、残りを通常のようにエンコードすることができます。

于 2010-03-29T05:11:16.763 に答える