好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

PHP防CC攻击的方法(防止快速刷新) - 网站安全 - 自

1.session记录

submit.php为发送页面,在这个页面上设置一个session变量,,并作为隐藏域和表单一起发送到,submitdeal.php页面.在服 务器端把post上来的隐藏变量和服务器端记录的session变量进行对比,比如一样,则写入数据库并清除session,这样用户刷新页面,两个值 不相等提示错误或跳转

优点:不用用户输入验证码

缺点:表单容易被复制

2.验证码 原理和第一种一样,只是session数据不作为隐藏域提交,,而是让用户填写,大多数网站都彩用,,有文字验证码和图片验证码,图片验证码安全性高..别

3.IP绑定 提交数据后,先从IP表里检索客户端IP,如果有,并且没有过期,那么报错,否则写入数据库,然后再取客房端IP,把IP写入数据库。

4.cookie 客户提交后处理程序先检索客户端有没有设置cookie,如果有,则不重复提交,如果没有,则写数据,,再写个cookie;

例:

方式一:

<?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;          }          ?>  

 

方式二:

<?php   session_start();   $allow_sep = "30000";   if (isset($_SESSION["post_sep"]))   {   if (time() - $_SESSION["post_sep"] < $allow_sep)   {   exit("请不要反复刷新");   }   else   {   $_SESSION["post_sep"] = time();   }   }   else   {   $_SESSION["post_sep"] = time();   }   ?>  

  www.2cto.com

方式三:

<?   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;   ?>  下载:  http://up.2cto.com/2012/0805/20120805113930246.rar  

查看更多关于PHP防CC攻击的方法(防止快速刷新) - 网站安全 - 自的详细内容...

  阅读:43次