3

XML、CDATA セクションでも null char が許可されないのはなぜですか?

その場でファイルを終了するようです。

解決策はありますか?Base64?

4

3 に答える 3

4

これは有効な XML 文字ではないため、解析エラーが発生するはずです。これは、歴史的な理由 (null で終了する文字列) と、XML のプレーンテキストの性質による可能性があります。

于 2009-02-02T11:59:19.100 に答える
2

この前の質問で答えが見つかるかもしれません:

XML 1.0 で「制御」文字が違法なのはなぜですか?

于 2009-02-02T11:57:47.620 に答える
1

'ファイルを終了する'べきではありませんが、整形式エラーを生成するはずです。世界の多くがまだnullで終了する文字列処理を使用しているため、これは許可されていません。したがって、\ 0を許可すると、処理チェーンの不特定のポイントで問題が発生する可能性があります。

これは、セキュリティの脆弱性でさえある可能性があります。過去には、\0を許可するシステムとそれをターミネーターとして使用するシステムのインターフェースに依存する多くのエクスプロイトがありました。したがって、最も安全な方法は、単にそれを禁止することです。

他の制御文字は&#...;としてエスケープできます。XML 1.1の他の場所での文字参照。ただし、CDATAセクションでは参照されません。XML 1.0では、制御文字を取り込む方法はまったくありません。結局のところ、これはテキストベースの人間が読める形式であると想定されています。

Base64?

はい。ただし、ほとんどの場合、バイナリの大きなチャンクを処理している場合は、XMLでカプセル化することはおそらく合理的な選択ではありません。

于 2009-02-02T12:40:11.573 に答える