最近 (28 日だそうです)、Array に関する新たな PHP 紛争が海外から勃発しました (アドレス: http://nikic.github.com/2011/12/28/Supercolliding-a-PHP-array.html)。ハッシュ テーブルの呼び出しで競合を使用して、サーバー上でサービス拒否攻撃を実行する可能性があります。
原則: 現在、多くの言語は、ユーザーからの一般的に使用される POST データを含むキーと値のデータを保存するためにハッシュを使用しており、攻撃者はリクエスト ヘッダーを作成し、多数の特別な「キー」値を POST に付加することができます (ハッシュによると)。各言語) アルゴリズムはカスタマイズされています)、言語の下部にある POST データを格納するハッシュ テーブルが「競合」 (衝突) によりリンク リストに縮退します。
このように、データ量が十分に大きい場合、言語は計算、検索、挿入中に大量の CPU 使用率を引き起こし、それによってサービス妨害攻撃を達成する可能性があります。
$size = pow(2, 16);
$startTime = microtime(true);
$array = array();
for ($key = 0, $maxKey = ($size - 1) * $size; $key
$array[$key] = 0;
}
$endTime = microtime(true);
echo ' . $size ' を挿入するには ' . $startTime . "n";
$startTime = microtime(true);
$array = array();
for ($key = 0, $maxKey = $size - 1; $key
$array[$key] = 0;
}
$endTime = microtime(true);
echo ' . $size ' の通常の要素には ' . $startTime . "n" が必要です。
/*** 結果
*
* 65536 個の悪意のある要素の挿入には 36.357950925827 秒かかります
* 65536 個の通常要素の挿入には 0.029613018035889 秒かかります
*/