Очистка / дезинфекция атрибутов xpath
Мне нужно динамически построить запрос XPath для атрибута элемента, где значение атрибута предоставляется пользователем. Я'Я не уверен, как очистить или очистить это значение, чтобы предотвратить XPath-эквивалент атаки SQL-инъекцией. Например (в PHP):
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-инъекций прошлого.
Теперь я точно знаю, что будут атрибуты, содержащие одинарные кавычки, и атрибуты, содержащие двойные кавычки. Поскольку они предоставляются в качестве аргумента функции, каков был бы идеальный способ санировать входные данные для этих функций?