1

我在网上找不到任何东西,也不知道为什么:打电话

filter_var($address, FILTER_VALIDATE_EMAIL)

导致连接被重置(至少 Firefox 是这样告诉我的)。5.3.13 with Suhosin-Patch服务器在 FreeBSD 上有 PHP 版本。在我自己的运行 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);
}

我在这里没有得到像“验证后”这样的输出。该地址也是一个非常简单的“no-reply@domain.com”地址,因此它甚至是有效的。

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

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

我把它交给了服务器管理员。从我在谷歌上找到的内容来看,一个简单的更新可以解决它,但我将不得不等待他的回答。如果问题解决了,我会在这里注明。在那之前,这将不得不休息,因为我无法修复这样一个系统深度的错误。

4

1 回答 1

0

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

  • 2010 年 10 月 26 日星期二 pgajdos@novell.com
    • 修复“带有大量数据的 FILTER_VALIDATE_EMAIL 的 filter_var 中的段错误”[bnc#649210]
    • CVE-2010-3710.patch
于 2012-06-24T19:46:08.523 回答