この記事では主に、CC 攻撃を防ぐための PHP コードと、Web ページの頻繁な更新と悪意のある Web ページの急速な更新を防ぐための PHP を紹介します。CC 攻撃は、プロキシ サーバーを使用してターゲット サイトに向けられた正当なリクエストを生成し、複数のユーザーが被害者に継続的にアクセスすることをシミュレートします。興味のある友達は勉強してみてください
Web ページは悪意を持ってすぐに更新されます。CC 攻撃では、攻撃者がプロキシ サーバーを使用してターゲット サイトへの正当なリクエストを生成し、複数のユーザーが被害 Web サイトに継続的にアクセスすることをシミュレートします。大量のデータを必要とするページを操作すると、最終的にターゲット Web サイトのサーバーがリソース不足になり、サーバー リソースが長時間にわたって 100% 使用されることになります。ネットワークが混雑し、通常のアクセスが中断されるまで、未完了の接続が常に存在します。これをCC攻撃と呼びます。攻撃対策ソフトウェアを使用してこれを実現することもできますが、その効果が明らかではない場合があります。
以下に、CC 攻撃をある程度防ぐことができる PHP コードを提供します。
主な機能: 3 秒以内に 5 回以上ページを継続的に更新すると、ローカル マシン http://127.0.0.1 がポイントされます。
CC 攻撃を防ぐ必要があるページにこのコードを置くだけです。
ソースコード
<?php $timestampcc = time(); $cc_nowtime = $timestampcc; if(session_is_registered('cc_lasttime')){ $cc_lasttime = $_SESSION['cc_lasttime']; $cc_times = $_SESSION['cc_times']+1; $_SESSION['cc_times'] = $cc_times; }else{ $cc_lasttime = $cc_nowtime; $cc_times = 1; $_SESSION['cc_times'] = $cc_times; $_SESSION['cc_lasttime'] = $cc_lasttime; } if(($cc_nowtime-$cc_lasttime)<3){//3秒内刷新5次以上可能为cc攻击 if($cc_times>=5){ echo '刷新太快!'; exit; } }else{ $cc_times = 0; $_SESSION['cc_lasttime'] = $cc_nowtime; $_SESSION['cc_times'] = $cc_times; } ?>
以下はPHPにおけるCC攻撃を防ぐ効果的な方法です:
1.session Record
submit.phpは送信ページであり、このページにセッション変数を設定し、隠しフィールドおよびフォームとして、submitdeal.php ページに送信され、サーバー側では、投稿された隠し変数がサーバー側に記録されているセッション変数と比較され、同じであれば書き込まれます。このようにして、ユーザーがページを更新すると、値が等しくない場合、エラーまたはジャンプが表示されます。
利点:ユーザーが確認コードを入力する必要がない
欠点:フォームは簡単にコピーできます
2. 原理は最初のものと同じですが、セッションが異なる点が異なります。データは隠しフィールドとして送信されるのではなく、ユーザーによって入力されます。ほとんどの Web サイトではテキスト検証コードと画像検証コードが使用されており、画像検証コードは非常に安全です。
データを送信した後、まず IP テーブルからクライアント IP を取得します。有効期限が切れていない場合は、エラーが報告されます。をクリックすると、客室の IP が取得され、その IP がデータベースに書き込まれます。
4. Cookie:
顧客が送信した後、処理プログラムはまずクライアントが Cookie を設定しているかどうかを検索し、設定していない場合は再度送信しません。 例:
ユーザーには意味がない 頻繁なジャンプやリクエストはサーバーに多大な負担をかけますが、実際には Cookie がこれを防ぐことができます。
<?php error_reporting(0); //if($_COOKIE["ck"])die("刷新过快!"); if($_COOKIE["ck"])header("Location:http://www.baidu.com");//这里如果用户刷新过快,给予终止php脚本或者直接302跳转 setcookie("ck","1",time()+3);//设定cookie存活时间3s echo "hello!"; ?>
方法1:
<?php session_start(); $k=$_GET['k']; $t=$_GET['t']; $allowTime = 1800;//防刷新时间 $ip = get_client_ip(); $allowT = md5($ip.$k.$t); if(!isset($_SESSION[$allowT])) { $refresh = true; $_SESSION[$allowT] = time(); }elseif(time() - $_SESSION[$allowT]>$allowTime){ $refresh = true; $_SESSION[$allowT] = time(); }else{ $refresh = false; } ?>
方法2:
<? session_start(); if(!emptyempty($_POST[name])){ $data = $_POST[name]; $tag = $_POST[tag]; if($_SESSION[status]==$tag){ echo $data; }else{ echo "不允许刷新!"; } } $v = mt_rand(1,10000); ?> <form method="post" name="magic" action="f5.php"><input type="hidden" name="tag" value="<?=$v?>"><input type=text name="name"><input type="submit" value="submit"> </form> <? echo $v; $_SESSION[status] = $v; ?>
方法3:
上記はさまざまな予防方法ですPHP メソッドにおける CC 攻撃は、Web ページが迅速かつ悪意を持って更新されるのを防ぐのに役立つことを願っています。
関連する推奨事項:
フォームの繰り返し送信を防ぐための ThinkPHP の方法 SQL インジェクションを防ぐための PHP の方法以上がPHP は CC 攻撃コードを防止します。 PHP は Web ページの頻繁な更新を防止します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。