jsonで安全にhtmlのようなテキストをエンコードするのに苦労します。テキストは<textarea>
に書き込まれ、ajaxによってサーバー(.net45 mvc)に転送され、json-stringでデータベースに格納されます。Json.netのトラバースとHtmlEncode文字列C#
サーバーに転送すると、有名な「潜在的に危険なRequest.Form値が検出されました」500のサーバーエラーが発生します。このメッセージが表示されないようにするには、転送されるモデルで[AllowHtml]属性を使用します。そうすることで、XSSの脆弱性が解消されます。その場合は誰でも{ "key1": "<script>alert(\"danger!\")</script>" }
に貼り付けてください。そのため、私は
tableData.Json = AntiXssEncoder.HtmlEncode(json, true);
問題は、それはもちろん私が欲しいものではありません
{ "key1": ...}
のようなものをレンダリングするように私は、完全なJSON文字列にこれを行うことはできませんあるようなものを使用したいと思います。これは、ユーザーが、彼らが好きなコード書くことができますが、私は、HTMLとしてレンダリングされることを回避することができ、かつ普通のテキストとして、それを表示するには、この結果では、より
{ "key1": "<script>alert("danger!")</script>" }
ようにする必要があります。誰もが文字列がAntiXssEncoder.HtmlEncode(... , ....);
でエンコードできるようにC#(Newtonsoft Json.NET)でjsonをトラバースする方法を知っていますか?または私は間違ったトラックにここにいますか?
編集:
- オプションではありません均一なオブジェクトに逆シリアル化のためのデータは、不均一です。
- データは一般に公開されるため、エンコードされたデータを保存すると自分の魂が楽になります。
[デシリアライズ時にHTMLで選択的にエスケープする](http://stackoverflow.com/q/32562381/10263)をご覧ください。それはあなたの状況に似て聞こえる。あなたは、ニーズに合わせてソリューションを適応させることができます。 –