يبلوغيتش XML الكيان الخارجي القرار: هل هناك طريقة أخرى إلى جانب استخدام السجل XML؟

StackOverflow https://stackoverflow.com/questions/1209743

سؤال

لدينا تطبيق يستخدم SiteMesh، وعندما يحاول يبلوغيتش تحليل الملفات TLD، فإنه يرى أن مواصفات DOCTYPE، التي تحتوي على الإشارة إلى TLD DTD، في "<لأ href =" HTTP: //java.sun. كوم / DTD / على شبكة الانترنت لjsptaglibrary_1_2.dtd "يختلط =" نوفولو noreferrer "> http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd ".

لا يمكن

والخادم بدء الاتصالات الصادرة إلى شبكة الإنترنت، وبالتالي لا يمكن استرداد DTD، والذي يسبب نشر التطبيق إلى الفشل.

وأنا أفهم أن هذه المشكلة يمكن حلها من خلال إنشاء السجل XML في وحدة تحكم يبلوغيتش، وتحديد ملف محلي للعودة عند محاولة حل، على سبيل المثال "<لأ href =" HTTP: //java.sun. كوم / DTD / على شبكة الانترنت لjsptaglibrary_1_2.dtd "يختلط =" نوفولو noreferrer "> http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd ".

هل هناك أي طريقة أخرى لمنع الملقم من الخروج إلى "الشباك لحل مرجع الوحدة الخارجية؟ بواسطة حزم DTD مع التطبيق وإبلاغ بطريقة أو بأخرى خادم للبحث عن أن DTD هناك بدلا من "هناك"؟

هل كانت مفيدة؟

المحلول

وسؤال سريع هل تحاول أن تفعل هذا لأسباب أمنية؟ ترغب في منع أي نوع من الهجوم XXE؟

وإذا كان الأمر كذلك هل يمكن تنفيذ EntityResolver الخاصة بك والتعامل معها كيف محلل يفعل أي بحث محلي أو بعيد.

يمكن العثور

والأمثلة هنا الشبكي: //www.securecoding .cert.org / ملتقى / صفحة / viewpage.action؟ PAGEID = 61702260

وإلا فإنك تحتاج إلى تعيين خصائص التكوين من XMLInputFactory للحصول على السلوك الذي تريده. ولا سيما javax.xml.stream.isSupportingExternalEntities وjavax.xml.stream.isValidating يعتمد فقط إذا كنت تعتقد أنك بحاجة التحقق من الصحة.

http://docs.oracle.com/ javaee / 5 / المعهد / javax / XML / تيار / XMLInputFactory.html

ونتطلع أيضا إلى محلل ستاكس إذا كان من المنطقي للاستخدام الخاص.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top