悪意のある更新とは、送信ページを常に更新することを意味し、その結果、大量の無効なデータが生成されます。PHP で悪意のあるページの更新を防ぐ方法をまとめてみましょう。 悪意のあるページブラッシングを防ぐ原則は次のとおりです。
ページ間で渡される検証文字列が必要です。
ページを生成するときに、文字列をランダムに生成します
すべての接続で必須パラメータとして渡されます。同時に、この文字列をセッションに保存します。
リンクまたはフォームをクリックしてページに入ると、セッション内の認証コードがユーザーが送信したものと同じであるかどうかが判断され、同じである場合は処理されます。繰り返し更新されたものとみなされます。
処理が完了すると、新しいページを生成するための認証コードが再生成されます
コードは次のとおりです | コードをコピー |
セッション開始();
$k=$_GET['k'] |
受信したページ 2.php は 2 つの部分に分割され、1 つの部分は送信された変数を処理し、もう 1 つの部分はページを表示します
他のページにジャンプしたり戻ったりするときに問題が発生するため、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">