0

我们有一个运行 PHP 5.3 的服务器,带有魔术引号:

magic_quotes_gpc 开 开
magic_quotes_runtime 关 关

每当我们收到一个 POST (CONTENT_TYPE: application/x-www-form-urlencoded) ,其中包含未清理的 XML(在元素有效负载中有引号、&、<、>),SimpleXML 无法解析它。

当我查看原始 $_POST 转储时,XML 从第一个非法字符开始被截断。以前从未见过。

然后,我添加了 htmlspecialchars,一切都很好,XML 能够被 SimpleXML 解析。

$payload = htmlspecialchars(stripslashes(trim($postXMLPayload)));

这表明完整的,尽管非法的 XML 确实在 $_POST 数组中,但是当我尝试查看它时,它被截断了。

我正在通过电子邮件发送 $_POST 中的值并对其进行数据库化,在这两种情况下,$_POST 中的值都被截断。

这是我获取 $_POST 值的方法

if(isset($_POST)){

foreach($_POST as $k=>$v){

    if(preg_match('/^\<\?xml/',trim($v))){

        $postXMLPayload = $v;
        break;
    }

}

}

有人可以解释一下吗?

谢谢

4

0 回答 0