2017-10-19 21 views
-1

.NET Coreの入力を解析するためにHtmlSanitizerを使用しています。XSS Injectionsを防止しています。 HtmlSanitizerはAngleSharp実装 - 私は角度シャープが何をするかわかりませんが、それはそうのように、いくつかの文字をエンコード:HTMLのサニタイズ - 不明なエンコーディングを取得するには?

入力:

&#33;@#$%^&*()_+{}:"<>?~

出力:

&#33;@#$%^&amp;*()_+{}:"&lt;&gt;?~

。なお、 <,>および&は、&lt;,&gt;および&ampである。ここに2つの質問があります:

  1. このエンコーディングとはなんですか?
  2. (オプション)AngleSharpなどのライブラリを使用して元に戻す方法はありますか?

サイドノート - すべての有害なものは必要に応じて削除されますが、この形式の変更は "安全な" HTMLで行われます。私はライブラリのセキュリティ機能を元に戻していないと指摘します。それについて長い議論があります。

+0

あなたはどのようなエンコーディングwを知っていた場合は、[MCVE]。 –

+0

を入力してくださいあなたがたぶん情報から知っているだろう。 @AlanLarimer – VSO

+0

HTMLのエンコード/デコードはAsp.Netに組み込まれています。詳細については、[この質問](https://stackoverflow.com/questions/33924496/where-is-htmlencode-in-asp-net-5)を参照してください。 – Amy

答えて

0

これらの文字列はHTMLでエンコードされています。 htmlエンコーディングの目的はXSSを防ぐことですが、私はすでに潜在的に有害なコードをすべて取り除いているので、私の場合は残念です。詳しくはこの回答で見つけることができます(そこからコピーされた引用):

HTML.Encode() - What/How does it prevent scripting security problems in ASP .NET?

  • 満たない文字(<)は&lt;に変換されます。
  • 大なり文字(>)は&gt;に変換されます。
  • アンパサンド文字(&)は&amp;に変換されます。
  • 二重引用符( ")は&quot;に変換される。そのコード
  • 任意のASCIIコード文字が0x80の が はASCII文字値で&#<number>、に変換されるよりも、大きいか等しい。

hereが説明するように、ツールに組み込まれて使用して.NET Coreでエンコードとデコードの文字列をhtmlのことができます。

関連する問題