での紛争にPHPハッシュ完全なソリューションは、CPUが最近の準備で忙しくしている100%に導いた「2012自習コースCCNPルーティングとスイッチング、」現在の章を書いたので、今日は勉強する時間を割いて、Linuxプラットフォームの下での作業に対処する時間がありません少し前に、バグ、PHP 5.2 /5.3 Hashの脆弱性により、インターネット上のPHPサイトがDDOS攻撃される可能性がありました。このサイトはLAMPアーキテクチャで、PHPのバージョンは5.2.17です。


PHPパッチ以前は、サーバーのCPU使用率は現在2.1%です。

私たちは、このウェブサーバ上でPHPプログラムを書き、目的は再現する失敗のためにそれをハッシュするマシンをテストすることです。プログラミング言語次のように、PHPのエコー$ショータイム=日付<(" Y-M-D Hを:私は:S");?&Gtを、実行が現在のサーバの時間後に有効にすることです?。


台湾は、PHPの環境試験機、私はLAMP環境を持つ仮想マシンを使用するこのマシンを見つける必要があります。 /usr /local /apacheの/htdocsディレクトリに、次のようにPHPのページのプログラミング言語を記述します。[root @ブログのhtdocs]#Viのhash.php

< PHPの$サイズ= POW(2、16)?;データ= '$;($キー= 0、$ maxKey =($サイズ - 1)* $サイズ; $キー|≦$ maxKey; $キー+ = $サイズ)のために、{$データ= $キー.. '=&#038;';}

$のURL = 'http://www.liuxxxxx.com/checktime.php'; $ RS =配列(); $ CH = curl_init();しますcurl_setopt($ chを、CURLOPT_HEADER、0);ますcurl_setopt($ CH、CURLOPT_RETURNTRANSFER、1);ますcurl_setopt($のCH、CURLOPT_URL、$のURL);ますcurl_setopt($ CH、CURLOPT_POST、1);ますcurl_setopt($ CH、CURLOPT_POSTFIELDS、$データ);(用$ i = 0; $ I< 100; ++ $ I){curl_exec($のCH);} curl_close($のCH);?>

URLアドレス、テスト・ターゲットを作成するために、 i <100、最大100までの同時実行を示します。ハッシュ衝突のためにhash.phpを手動で実行してください。 [ルート@ブログのhtdocs]#は/usr /local /PHP /binに/PHPのhash.phpの

は、Webサーバー側では、我々は、サーバのリソース使用率を参照してください、CPUは明らかに、単一の仮想97.6%ですHashと同時に100を取るMachineは、WebサーバーのCPU使用率を100%に増やすのに十分です。


CPUは100%です。ウェブサイトは何ですか?このWebサーバは、圧力のビットを持っているので、気をつけていないと推定され、通常の反応上のウェブサイトのリンクを指して、私たちはウェブサーバをブラウズしてみましょう。並行処理の量を10000に調整してから、同時に100を測定します。


checktime.phpページを更新してください。このページはすばやく表示され、Webサイトは正常です。個人のブログ、唯一の少数の人々が訪れ、無加圧、そうでもによって、もしので、しかし、この時間は、WebサーバーCPUが100%


結論を持って、私は、ターゲットマシンとしての個人的なブログを使用しました10000同時ハッシュ、最大100%のCPU、個人的なブログのオープンスピード、まだかなり速い。

パッチを当てて、もう一度見てみましょう。 1は、環境を構築する際に最初にチェックした後、PHPコンパイラのパラメータは、PHPのパッチをダウンロードするには、インターネットに、


2を
、ダウンロードアドレスは次のとおりです。https://github.com/laruence /laruence.github.com/tree/master/php-5.2-max-input-vars


3、個々のプラットフォームのバージョン番号に応じて、外出先でクリックしないで、その上に注意してください右クリックし、HTMLファイルで下のようにそれ以外の場合はあなたを保存、ファイル名は、実際のphp-5.2.17-MAX-入力vars.patchです。新しいポップアップページのポイント「未加工」で、このパッチファイルが開きます。



中身をコピーし、その一部を切り取るだけです。それからちょうどコピーされたWebサーバ、PHP-5.2.17-MAX-入力vars.patch、上に新しいファイルを作成します。

4、phpの元のインストールディレクトリに、私の環境は/opt/soft/php-5.2.17です。最初にオリジナルのコンパイル済みのものをクリーンアップします。


5、パッチやPHPの
を再コンパイル


設定してから再作成ZEND_EXTRA_LIBS = - //いくつかのプラットフォームを作る 'liconv' 、それぞれの環境が異なります、そして、インストール

6、Apacheを再起動、効果を参照してください[root @ lghblog php-5.2.17] Local /apache /bin /apachectl start

Webサーバーのphpinfo.phpにアクセスして、PHP環境が変更されたかどうかを確認してください。あなたは一番上に見ることができる、PHP版はP1が付属しています。これで十分ではありませんので、衝突してCPUが100%になるかどうかを確認するためにHashを使用しましょう。

テストマシンで、同時10000を取得してHash Webサーバーにアクセスします。 WebサーバーのCPUは0.5%のままです。



問題解決!

Copyright © Windowsの知識 All Rights Reserved