Мне нужно динамически построить запрос XPath для атрибута элемента, где значение атрибута предоставляется пользователем. Я не уверен, как сделать очистку или дезинформировать это значение, чтобы предотвратить эквивалент XPath атаки SQL-инъекции. Например (в PHP):Очистка/дезинфекция атрибутов xpath
<?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']
Последние, в частности, напоминает инъекцию SQL атак былого.
Теперь я знаю, что будут атрибуты, содержащие одинарные кавычки и атрибуты, содержащие двойные кавычки. Поскольку они представлены в качестве аргумента функции, каков был бы идеальный способ дезинформировать вклад для этих целей?
Вы, возможно, с видом '? – 2008-10-10 04:41:10
Да, это тот, который я ищу. Здесь есть список всех (5) объектов XML: http://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references – 2008-10-10 11:45:43