0

XMLでいくつかの悪いデータが送信されました.vb.netにXMLデータを含む文字列を通過し、不要なデータを安全にサニタイズする方法があるかどうか疑問に思っていました',<,>,&.不適切な形式の XML を調べて整理する必要がありますか..

現在、文字列の置換を追加し続ける機能がありますが、不良データはランダムである可能性があり、問題があることに気付くまでにしばらく時間がかかる可能性があります。

これを修正するためにreg-exで実行できる方法があるのでしょうか、それとも.NETに悪いXMLを安全なXMLに安全に変換する関数があるのでしょうか?

最も簡単な解決策はソースを変更することですが、クローズド ソースのレガシー システムからのものであるため、これは不可能です。

ありがとうマット

4

2 に答える 2

2

アプリケーションが XML を正しく生成しない場合におそらく最もよくあるバグは、"<"、"&"、""" などの特殊文字をエスケープできないことです。整形式の XML を出力します (ただし、意図した XML ではありません)。

エスケープされていない """ は属性値の終わりのように見え、結果として生じる XML 構文エラーはファイルのかなり後の方にある可能性があるため、属性で """ をエスケープしないと、修復が特に困難になる可能性があります。

ほとんどの場合、「&」または「<」をエスケープしない方が少し簡単です。これは、これらの文字の後に整形式の XML で合法的に続く何か (名前とセミコロンの場合) が続いていないことを検出できるためです。 「&」、名前、または「/name」または「!」の 「<」の場合。これが探しているものである場合、エラーの 90% しか検出できませんが、何もないよりはましかもしれません。

このゴミを送ってきた人に戻って直してもらうほうがずっといいです。彼らはそのようなゴミを送ることによって誰かにサービスを提供していません.

于 2013-07-26T10:21:06.580 に答える
0

各文字を反復処理し、文字がそれぞれの xml エンティティによって < と > の文字の間に収まらない場合は、xml でサポートされていないこれらすべての文字を置き換える関数を作成して、入力をきれいにする必要があります。

完全なリストについては、 wikiで見ることができます

これらの文字を置き換えると、任意の XML パーサーを使用して解析できる有効な xml に到達します。

于 2013-07-26T08:33:41.723 に答える