मुझे तत्व विशेषता के लिए एक XPath क्वेरी गतिशील रूप से बनाने की आवश्यकता है, जहां उपयोगकर्ता द्वारा विशेषता मान प्रदान किया जाता है। मैं निश्चित रूप से एसक्यूएल इंजेक्शन हमले के XPath समकक्ष को रोकने के लिए इस मान को साफ करने या स्वच्छ करने के बारे में अनिश्चित हूं। उदाहरण के लिए (PHP में):xpath विशेषताओं की सफाई/sanitizing
<?php
function xPathQuery($attr) {
$xml = simplexml_load_file('example.xml');
return $xml->xpath("//myElement[@content='{$attr}']");
}
xPathQuery('This should work fine');
# //myElement[@content='This should work fine']
xPathQuery('As should "this"');
# //myElement[@content='As should "this"']
xPathQuery('This\'ll cause problems');
# //myElement[@content='This'll cause problems']
xPathQuery('\']/../privateElement[@content=\'private data');
# //myElement[@content='']/../privateElement[@content='private data']
विशेष रूप से अंतिम व्यक्ति एसक्यूएल इंजेक्शन हमलों के लिए याद दिलाता है।
अब, मुझे पता है कि ऐसे गुण होंगे जिनमें सिंगल कोट्स और डबल कोट्स वाले गुण होंगे। चूंकि इन्हें फ़ंक्शन के लिए तर्क के रूप में प्रदान किया जाता है, इनके लिए इनपुट को स्वच्छ करने का आदर्श तरीका क्या होगा?
आप शायद ' अनदेखी कर रहे हैं? –
हाँ, यही वह है जिसे मैं ढूंढ रहा हूं। यहां एक्सएमएल इकाइयों के सभी (5) की एक सूची है: http://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references –