Czyszczenie / dezynfekcja atrybutów xpath

Muszę dynamicznie skonstruować zapytanie XPath dla atrybutu elementu, gdzie wartość atrybutu jest dostarczana przez użytkownika. Nie jestem pewien, jak wyczyścić lub zdezynfekować tę wartość, aby zapobiec równoważnikowi XPath ataku wtrysku SQL. Na przykład (w PHP):

<?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']

Ten ostatni w szczególności przypomina dawne ataki SQL injection.

Wiem na pewno, że będą atrybuty zawierające pojedyncze cudzysłowy i atrybuty zawierające podwójne cudzysłowy. Ponieważ są one dostarczane jako argument funkcji, jaki byłby idealny sposób na oczyszczenie danych wejściowych?

questionAnswers(3)

yourAnswerToTheQuestion