1

Web 上で何も見つからず、理由もわかりません: 電話中

filter_var($address, FILTER_VALIDATE_EMAIL)

接続がリセットされることにつながります(少なくともFirefoxが教えてくれます)。5.3.13 with Suhosin-Patchサーバーには、FreeBSDの PHP バージョンがあります。5.3.3Debian と PHP のバージョンを Suhosinで実行している自分のサーバーでこれをテストしても問題なく動作しますが、以前は同じ動作を示していたことを覚えているようです。

PHP のマニュアルには、これが PHP 5.2.0 で導入されたことが示されているので、動作するはずです。

編集:何が失敗したかをよりよく示すために、2つの例を示します。1つはリセットを使用し、もう1つは適切な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"

これをサーバー管理者に渡しました。Googleで見つけたものから、簡単な更新で解決できますが、彼の答えを待つ必要があります. 問題が解決した場合は、ここにメモします。このようなシステムに深いエラーを修正することはできないため、それまでは休む必要があります。

4

1 に答える 1

0

このsuhosin の要約では、そのフラグを使用した場合の segfault の修正について述べています。これは opensuse のレポートですが、インストールが影響を受けやすい可能性があります。おそらく、suhosin パッチが少なくとも opensuse のバージョン 0.17.1 に対応するものであることを確認する必要があります。問題は、 suhosin の公式changelogでそれについて何も見つからないことです。この場合、freebsd はどこからポート ソースを取得しますか?

  • 2010 年 10 月 26 日火曜日 pgajdos@novell.com
    • 「大量のデータを含む FILTER_VALIDATE_EMAIL を使用した filter_var のセグメンテーション違反」を修正 [bnc#649210]
    • CVE-2010-3710.patch
于 2012-06-24T19:46:08.523 に答える