ホームページ > php教程 > php手册 > 配列(ハッシュ)の競合の問題

配列(ハッシュ)の競合の問題

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
リリース: 2016-06-21 08:52:18
オリジナル
1087 人が閲覧しました

最近 (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 秒かかります

*/



関連ラベル:
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート