使用php在FILTER_VALIDATE_EMAIL上“重置连接”

时间:2012-06-24 19:24:42

标签: php

我在网上找不到任何内容,我不知道原因:致电

filter_var($address, FILTER_VALIDATE_EMAIL)

导致连接被重置(至少这是Firefox告诉我的)。服务器在FreeBSD上有PHP版本5.3.13 with Suhosin-Patch。 在我自己的运行Debian和PHP版本5.3.3的服务器上使用Suhosin进行测试工作正常,但我似乎记得它之前确实显示了相同的行为。

PHP手册表明这是在PHP 5.2.0上引入的,所以它应该可以工作,不应该吗?

编辑:为了更好地展示失败的内容,我向您展示了两个示例,一个是重置,另一个是正确的die("message");

此示例在浏览器窗口输出Before validate

if (function_exists('filter_var')) { //Introduced in PHP 5.2

    die("Before validate");
  if(filter_var($address, FILTER_VALIDATE_EMAIL) === FALSE) {
    return false;
  } else {
    return true;
  }
} else {
return preg_match('/^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+@(?:(?:(?:[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!\.)){0,61}[a-zA-Z0-9_-]?\.)+[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!$)){0,61}[a-zA-Z0-9_]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$/', $address);
}

该示例导致上述“连接已重置......”:

if (function_exists('filter_var')) { //Introduced in PHP 5.2


  if(filter_var($address, FILTER_VALIDATE_EMAIL) === FALSE) {

  die("After validate");
    return false;
  } else {

  die("After validate");
    return true;
  }
} else {
  return preg_match('/^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+@(?:(?:(?:[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!\.)){0,61}[a-zA-Z0-9_-]?\.)+[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!$)){0,61}[a-zA-Z0-9_]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$/', $address);
}

在这里获得类似“After validate”的输出。 地址也是一个非常简单的“no-reply@domain.com”地址,所以它甚至有效。

好的另一个编辑:我让一个oneliner只运行这个函数并在控制台上执行它。这是输出:

/libexec/ld-elf.so.1: /usr/local/lib/php/20090626/filter.so: Undefined symbol "php_pcre_exec"

我把它交给了服务器管理员。从我在谷歌上发现的,一个简单的更新可以解决它,但我将不得不等待他的答案。如果问题解决了,我会在这里注意到这一点。在此之前,这将不得不休息,因为我无法解决这样一个系统深度错误。

1 个答案:

答案 0 :(得分:0)

在这个suhosin摘要中,他们讨论了使用该标志时对segfault的修复,它是一个opensuse报告,但可能是您的安装容易受到影响。您可能需要确保您的suhosin补丁至少达到与opensuse的0.17.1版相对应的补丁。问题是我在suhosin的官方changelog上找不到任何关于它的信息。在这种情况下,freebsd从哪里获取端口源?

  
      
  • 2010年10月26日星期二pgajdos@novell.com   
        
    • 使用FILTER_VALIDATE_EMAIL修复“filter_var中的Segfault”   大量数据“[bnc#649210]
    •   
    • CVE-2010-3710.patch
    •   
  •