2012-07-03 5 views
0

Мне нужно исправить код ниже для ввода данных XML.XML Data Injection в ответе XML из веб-службы

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
DocumentBuilder db = factory.newDocumentBuilder(); 
InputSource inStream = new InputSource(); 
inStream.setCharacterStream(new StringReader(xmlFromWebService)); 
Document doc = db.parse(inStream); // reported at this line by a code audit tool 
doc.getDocumentElement().normalize(); 

Как это исправить? У кого-нибудь есть предложения.

+0

ya Я вас беспокоил. А также после обнаружения и реализации решения в моем модуле и тестирования их я разместил правильные решения по каждому из заданных вопросов. Я не знал этого. –

+0

эй может дать решение для этого сейчас !!!!! –

ответ

1

Я предполагаю, что это связано с проверкой вашего XML на данный XSD, чтобы предотвратить внедрение данных XML. Я бы предложил изменить ваш код следующим образом:

try { 
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
    factory.setNamespaceAware(true); 
    factory.setValidating(true); 

    factory.setProperty("http://java.sun.com/xml/jaxp/properties/schemaLanguage", 
         "http://www.w3.org/2001/XMLSchema"); 
    factory.setProperty("http://java.sun.com/xml/jaxp/properties/schemaSource", 
         "file:<your_xsd_file>"); 

    DocumentBuilder builder = factory.newDocumentBuilder(); 
    InputSource inStream = new InputSource(); 
    inStream.setCharacterStream(new StringReader(xmlFromWebService)); 
    Document document = builder.parse(inStream); 

} catch (ParserConfigurationException e) { 
    e.printStackTrace(); 
} catch (SAXException e) { 
    e.printStackTrace(); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 

Надеюсь, вы получите подсказку!

+0

ya У меня есть точка. Я также сделал некоторые r & d на том же самом. может у, пожалуйста, скажите мне, какое свойство этот setProperty устанавливает? Я получаю setAttribute как фактическое имя. будет ли он работать одинаково? И какова должна быть ценность этих свойств? Также, как все будет работать над документомBuilderFactory? –

+0

@ R.K.R: 1. SchemaLanguage & Schema Source (вот почему я сохранил значение второго свойства намеренно как ). 2. setAttribute также будет работать. Прочитайте эти две строки в моем коде, и вы сможете понять, что использовать для значения. 3. Я не совсем понял, что вы имели в виду под последней частью вашего вопроса. – Sujay

+0

Я имею в виду, как documentBuilderfactory будет проверять все содержимое xml? каким-либо образом я с ним справился, нашел все решения вопросов, а также реализовал демонстрационное решение и получил одобрение его клиента. спасибо большое !!!!!! 1 –

 Смежные вопросы

  • Нет связанных вопросов^_^