我正在使用XPath在SimpleXMLElement中选择XML节点。我的XPath表达式是变量:
$xml->xpath("a[@href = '{$some_specific_value_of_href}']");
由于我无法完全控制$some_specific_value_of_href
变量的值,因此上面的代码很容易受到注入攻击,其中变量的恶意值将产生任意元素集。
大多数成熟的XML API(例如lxml library for Python)允许用户在XPath表达式中指定占位符变量名称,并编译XPath表达式而不会带来注入攻击的风险:
xml.xpath(
"a[@href = $placeholder_variable_name]", # Python performs no substitution here
placeholder_variable_name=some_specific_value_of_href
);
PHP 7是否具有类似的功能?