10

XMLドキュメントでCDATA要素を使用することは脆弱ですか?もしそうなら、XMLドキュメントでCDATA要素を使用するとどうなりますか?

4

3 に答える 3

13

「脆弱性」とはどういう意味かわかりませんが、多くの人がCDATAセクションで犯す間違いが1つあります。これは、怠惰なプログラマーがテキストエスケープを実際に理解しておらず&、XMLで特殊文字をエンコードする通常のプロセスを回避しようとした場合に発生します。彼らは彼らが逃げることができると思います:

print "<element><![CDATA["+textstring+"]]></element>";

<これにより、または&文字がマークアップとして扱われるのを実際に停止しますが、テキスト文字列にシーケンスtextstringが含まれている可能性があるため、防水ではありません。]]>

<element><![CDATA[ Foo ]]> <bar>I'm an unexpected element!</bar> ]]></element>

これはXMLインジェクションであり、HTMLインジェクションと同様に、XSSのようなセキュリティに影響を与える可能性があります。

したがって、CDATA内のいくつかのシーケンスをエスケープする必要があります(通常、]]>シーケンスを2つのCDATAセクションに分割します)。実際には、CDATAの使用は&、テキストコンテンツを通常の方法でエンコードするよりも簡単ではありません。したがって、CDATAセクションを使用する理由は実際にはありません。

于 2009-11-13T11:44:10.033 に答える
3

CDATAセクションは、XMLドキュメント内の文字データを表すもう1つの方法です。エスケープ方法が異なることを除けば、ドキュメント内の他の(タグ以外の)テキストとまったく同じ意味です。

CDATAに関連する追加の「脆弱性」はありません(もちろん、XML解析ライブラリのバグを除きます)。

于 2009-11-13T11:08:39.487 に答える
0

何に脆弱ですか?ある種のインジェクション攻撃?CDATAは、解析せずにコンテンツを渡すようにパーサーに指示するため、XMLを検証している場合、CDATAセクションは検証ステップを見逃していると思います。

XMLストリームを使用するコードには、スキーマ検証に加えて、ある種のビジネス検証が必要です。そのため、入力を使用する前に入力をチェックしなかった場合にのみリスクがあります。

于 2009-11-13T11:07:08.693 に答える