簡體   English   中英

使用PHP在FILTER_VALIDATE_EMAIL上的“連接已重置”

[英]“The connection was reset” on FILTER_VALIDATE_EMAIL with php

我在網上找不到任何東西,也不知道為什么:打電話

filter_var($address, FILTER_VALIDATE_EMAIL)

導致連接被重置(至少Firefox告訴了我)。 該服務器的PHP版本為5.3.13 with Suhosin-Patch在FreeBSD上5.3.13 with Suhosin-Patch 使用Suhosin在運行Debian和PHP 5.3.3版本的我自己的服務器上對其進行測試也可以正常工作,盡管我似乎記得它之前確實顯示了相同的行為。

PHP手冊指出這是在PHP 5.2.0上引入的,因此應該可以,不是嗎?

編輯:為了更好地說明失敗的原因,我向您展示了兩個示例,一個示例帶有重置,另一個示例具有適當的die("message");

本示例Before validate瀏覽器窗口上輸出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"

我將其移交給服務器管理員。 根據我在google上找到的信息,可以通過簡單的更新來解決它,但是我將不得不等待他的回答。 如果問題得到解決,我將在此處進行說明。 在此之前,這將必須解決,因為我無法修復此類系統深度錯誤。

在此suhosin摘要中,他們討論使用該標志時的段錯誤修復,這是一個openuse報告,但可能是您的安裝容易受到此漏洞的影響。 您可能需要確保您的suhosin補丁程序至少與opensuse的0.17.1版本對應。 問題是我在suhosin的官方變更日志上找不到任何有關它的信息。 在這種情況下,freebsd從何處獲取其端口源?

  • 2010年10月26日,星期二pgajdos@novell.com
    • 修復“帶有FILTER_VALIDATE_EMAIL的filter_var中的Segfault具有大量數據” [bnc#649210]
    • CVE-2010-3710。補丁

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM