PHP は悪意のあるリフレッシュとチケットブラッシングの実装コードを防止します_PHP チュートリアル

WBOY
リリース: 2016-07-13 17:10:52
オリジナル
1830 人が閲覧しました

悪意のある更新とは、送信ページを常に更新することを意味し、その結果、大量の無効なデータが生成されます。PHP で悪意のあるページの更新を防ぐ方法をまとめてみましょう。 悪意のあるページブラッシングを防ぐ原則は次のとおりです。

ページ間で渡される検証文字列が必要です。
ページを生成するときに、文字列をランダムに生成します
すべての接続で必須パラメータとして渡されます。同時に、この文字列をセッションに保存します。

リンクまたはフォームをクリックしてページに入ると、セッション内の認証コードがユーザーが送信したものと同じであるかどうかが判断され、同じである場合は処理されます。繰り返し更新されたものとみなされます。
処理が完了すると、新しいページを生成するための認証コードが再生成されます

受信したページ 2.php は 2 つの部分に分割され、1 つの部分は送信された変数を処理し、もう 1 つの部分はページを表示します 変数を処理した後、header( "location: ".$_SERVER[ 'PHP_SELF ']) を使用して自分のページにジャンプします
コードは次のとおりです コードをコピー

セッション開始(); $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] = 時間(); }elseif(time() - $_SESSION[$allowT]>$allowTime){
$refresh = true
$_SESSION[$allowT] = 時間(); }その他{
$refresh = false
}
?>





私もie6で2回送信したことがありますが、これは送信の代​​わりに画像を使用した場合であり、送信ボタンだけの場合は2回送信されます。 2回。 それでは整理してみましょう:

方法は基本的に以前のものと同じです
この部分は判断する必要があります。ポスト変数がない場合はスキップしてください。もちろん、他のページにジャンプすることもできます。

他のページにジャンプしたり戻ったりするときに問題が発生するため、php ファイルで行うことをお勧めします。
前のページで渡された変数が要件を満たしていない場合は、強制的に <script>history.go(-1); に戻ることができます。 私は一般的な考え方について話しましたが、マスターはそのような問題に遭遇しないかもしれませんが、誰もがマスターであるわけではありません。 <br /> <br /> <br /> <br />コードは次のとおりです<br /> <br />コードをコピー<br /> </p> <table width="620" align="center" border="0" cellpadding="1" cellspacing="1" style="background:#FB7"> <tr> <td width="464" height="27" bgcolor="#FFE7CE"> </td> <td width="109" align="center" bgcolor="#FFE7CE" style="cursor:pointer;" onClick="doCopy('copy2203')">if(isset($_POST)) </td> { </tr> if (変数が要件を満たしていない) <tr> <スクリプト>/スクリプト> それ以外は</p> </td> <td height="auto" colspan="2" valign="top" bgcolor="#FFFFFF" style="padding:10px;" class="copyclass" id="copy2203"> 運用データ <p> ... </p> if (操作完了) <p> header( "場所: ".$_SERVER[ 'PHP_SELF ']); }<br> <スクリプト言語= "JavaScript"> <!-- <br /> javascript:window.history.forward(1); //--> <br /> </スクリプト><br> <br> <br> <br> <br>COOKIEも使えます<br> <br> <br> <br>コードは次のとおりです<br> <br>コードをコピー</p> </td> </tr> </table> <p><?php</p> $c_file="counter.txt"; //ファイル名を変数に代入します<table width="620" align="center" border="0" cellpadding="1" cellspacing="1" style="background:#FB7"> if(!file_exists($c_file)) //ファイルが存在しない場合の操作<tr> {<td width="464" height="27" bgcolor="#FFE7CE"> $myfile=fopen($c_file,"w"); // ファイルを作成します</td> fwrite($myfile,"0") //「0」を配置します<td width="109" align="center" bgcolor="#FFE7CE" style="cursor:pointer;" onClick="doCopy('copy1145')"> fclose($myfile); // ファイルを閉じます</td> }</tr> $t_num=file($c_file); // ファイルの内容を変数に読み込みます<tr> if($_COOKIE["date"]!="date(Y年m月d日)") //COOKIEの内容が現在の日付と一致するかを判定します<td height="auto" colspan="2" valign="top" bgcolor="#FFFFFF" style="padding:10px;" class="copyclass" id=copy1145> {<p> $t_num[0]++ //元のデータが 1 増加します<br />; $myfile=fopen($c_file,"w"); //ファイルを書き込みモードで開きます<br /> fwrite($myfile,$t_num[0]); //新しい値を書き込みます<br /> fclose($myfile); // ファイルを閉じます<br /> //現在の日付をCOOKIEに書き換え、COOKIEの有効期限を24時間に設定します<br /> setcookie("日付","日付(Y年M月D日)",time()+60*60*24);<br /> }<br /> ?><br /> <br /> <br /> <br /><p>セッション</p> <p>メインページファイルのindex.phpコード: </p> <table width="620" align="center" border="0" cellpadding="1" cellspacing="1" style="background:#FB7"> <tr> <td width="464" height="27" bgcolor="#FFE7CE">コードは次のとおりです</td> <td width="109" align="center" bgcolor="#FFE7CE" style="cursor:pointer;" onClick="doCopy('copy3415')">コードをコピー</td> </tr> <tr> <td height="auto" colspan="2" valign="top" bgcolor="#FFFFFF" style="padding:10px;" class="copyclass" id=copy3415><?php session_start()?><br> <html><br> <頭><br> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"><br> <title>セッションによるページの更新を無効にする</title><br> <style type="text/css"><br> <!--<br /> .style1 {<br /> フォントサイズ: 14px;<br /> font-family: "中国の模倣宋王朝";<br /> フォントの太さ: 太字;<br /> }<br /> .style2 {font-family: "中国の琥珀"}<br /> --><br /> </スタイル><br> </head><br> <br> <?php<br /> //テキストを使用してデータを保存します<br /> If($_SESSION[temp]==""){<br /> If(($fp=fopen("counter.txt","r"))==false){ echo "ファイルを開けませんでした!";<br /> }else{ $counter=fgets($fp,1024) // ファイル内のデータを読み取ります<br />; fclose($fp); //テキストファイルを閉じます<br />                                               $fp=fopen("counter.txt","w") //書き込み用にテキストファイルを開きます<br /> <br /> fputs($fp,$counter); //新しい統計を 1 増やします<br /> fclose($fp) } //テキストファイルから統計を読み取ります<br /> If(($fp=fopen("counter.txt","r"))==false){echo "ファイルを開けませんでした!";}else{<br /> $counter=fgets($fp,1024);<br /> fclose($fp);<br /> Echo "Digital counter:" $ counter;} // 出力アクセス時間 <br /> $_SESSION[temp]=1; //ログイン後、$_SESSION[temp] の値は空ではないので、$_SESSION[temp] に値 1 を代入します<br /> }その他{<br /> echo "<script>alert('このページを更新できません!!');history.back();</script>";
}
?>
<表幅="300" ボーダー="0" セルパディング="0" セルスペース="0" バックグラウンド="images/141.jpg">

セッションによるページの更新を無効にする



$counter=fgets($fp,1024);
fclose($fp);
Echo "Web ページへのアクセス:" $ counter;} // 訪問数を出力しますか?



 






counter.txt ファイルは、同じディレクトリ内のログイン数を記録するファイルです... $counter=fgets($fp,1024); は、ファイル内の数値を読み取るメソッドです(小数点値を含むことができます)...


www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/629624.html技術記事悪意のある更新とは、送信ページを常に更新することを意味し、その結果、大量の無効なデータが生成されます。 悪意のあるページの更新を防ぐための PHP の方法をまとめます。
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート