사용자가 속성 값을 제공하는 요소 속성에 대한 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 주입 공격을 연상시킨다.
사실 저는 작은 따옴표와 큰 따옴표가 포함 된 속성을 포함하는 속성이 있음을 알고 있습니다. 이것들이 함수의 인수로 제공되기 때문에 이것들에 대한 입력을 위생 처리하는 가장 이상적인 방법은 무엇입니까?
당신은 아마도 ' 내려다 보이는 있습니까? –
그래, 그게 내가 찾고있는거야. 다음 XML 엔티티 목록이 모두 있습니다 (http://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references –