ホームページ >バックエンド開発 >PHPチュートリアル >悪意のあるページ更新を防ぐための PHP 手順

悪意のあるページ更新を防ぐための PHP 手順

WBOY
WBOYオリジナル
2016-06-13 12:23:421812ブラウズ

php で悪意のあるページの更新を防ぐ方法

php で悪意のあるページの更新を防ぐ方法

一般的に、悪意のある更新とは、 -stop 送信ページを更新すると大量の無効なデータが生成されるため、悪意のあるページの更新を防ぐための PHP の方法をまとめてみましょう。

悪意のあるページ ブラッシングを防ぐ原則は次のとおりです。

ではページ間で検証文字列を渡す必要があり、

ではページの生成時に検証文字列がランダムに生成されます。文字列

は、すべての接続で必須パラメータとして渡されます。同時に、この文字列をセッションに保存します。

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

処理が完了すると、新しいページを生成するための検証コードが再生成されます
PHP の実装コードは次のとおりです。

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

私もIE6で2回送信した後に遭遇しました。私は以前そこにいたことがあります。大まかに言うと、送信の代わりに画像を使用すると、画像にsubmit()があり、それが単なる送信ボタンである場合、私は一度も送信したことがありません。二重に送信される状況が発生しました。 ここで整理してみましょう:

方法は基本的に前のものと同じです
受信したページは 2 です。php は 2 つの部分に分かれており、1 つの部分は送信された変数を処理し、もう 1 つの部分は表示しますページ

変数を処理した後、header( "location: ".$_SERVER[ 'PHP_SELF ']) を使用して自分のページにジャンプします

この部分があるかどうかを判断する必要があります。ポスト変数ではないため、スキップしてください。もちろん、他のページにジャンプすることもできます。

他のページにジャンプしたり戻ったりするときに問題が発生するため、php ファイルで行うことをお勧めします。
前のページで渡された変数が要件を満たしていない場合は、強制的に 3f1c4e4b6b16bbbd69b2ee476dc4f83ahistory.go(-1); に戻ることができます。ただし、誰もが専門家であるわけではありません。



if(isset($_POST)) {  if(变量不符合要求) <script> history.go(-1); </script> else //操作数据 ... if(操作完成) header( "location: ".$_SERVER[ 'PHP_SELF ']); } <script language= "JavaScript "> <!--  javascript:window.history.forward(1); //--> </script>
COOKIE を
使用することもできます


<?php$c_file="counter.txt"; //文件名赋&#20540;给变量if(!file_exists($c_file)) //如果文件不存在的操作{$myfile=fopen($c_file,"w"); //创建文件fwrite($myfile,"0"); //置入“0”fclose($myfile); //关闭文件}$t_num=file($c_file); //把文件内容读入变量if($_COOKIE["date"]!="date(Y年m月d日)") //判断COOKIE内容与当前日期是否一致{$t_num[0]&#43;&#43;; //原始数据自增1$myfile=fopen($c_file,"w"); //写入方式打开文件fwrite($myfile,$t_num[0]); //写入新数&#20540;fclose($myfile); //关闭文件//重新将当前日期写入COOKIE并设定COOKIE的有效期为24小时setcookie("date","date(Y年m月d日)",time()&#43;60*60*24);}?>

セッションを使用:

メインページファイルのindex.php コード:


<?phpsession_start();?><html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><title>通过session禁止页面刷新</title><style type="text/css"><!--.style1 {font-size: 14px;font-family: "华文仿宋";font-weight: bold;}.style2 {font-family: "华文琥珀"}--></style></head><body><?php//使用文本存储数据   if($_SESSION[temp]==""){   if(($fp=fopen("counter.txt","r"))==false){    echo "打开文件失败!";     }else{ $counter=fgets($fp,1024);   //读取文件中数据     fclose($fp);                        //关闭文本文件     $counter&#43;&#43;;                         //计数器增加1     $fp=fopen("counter.txt","w");       //以写的方式打开文本文件       fputs($fp,$counter);                //将新的统计数据增加1     fclose($fp);    }                   //关闭文//从文本文件中读取统计数据       if(($fp=fopen("counter.txt","r"))==false){       echo "打开文件失败!";       }else{        $counter=fgets($fp,1024);        fclose($fp);           echo "数字计数器: " .$counter ;    }   //输出访问次数     $_SESSION[temp]=1; //登录以后,$_SESSION[temp]的&#20540;不为空,给$_SESSION[temp]赋一个&#20540;1     }else{     echo "<script>alert('您不可以刷新本页!!'); history.back();</script>";     }?><table width="300" border="0" cellpadding="0" cellspacing="0" background="images/141.jpg"><tr>    <td height="35" align="center"><span class="style1">通过session禁止页面刷新</span></td></tr><tr>    <td height="40" align="center"><span class="style2">      <?php if(($fp=fopen("counter.txt","r"))==false){      echo "打开文件失败!";      }else{        $counter=fgets($fp,1024);        fclose($fp);           echo "网页访问量: " .$counter ;     }   //输出访问次数 ?>    </span></td></tr><tr>    <td height="25" align="center"> </td></tr></table></body></html>
その内:

counter.txt ファイルはログイン番号ファイルです。同じディレクトリです。

$counter=fgets($fp,1024); はファイル内の数値を読み取るためのメソッドです (小数点値を含むことができます)
この記事が PHP プログラミングの皆様のお役に立てれば幸いです。


参考元:

悪意のあるリフレッシュやチケット詐欺を防ぐためのphpメソッド
http://www.lai18.com/content/369326.html
詳細資料

「PHP セキュリティ プログラミング シリーズ」シリーズの技術記事を整理、収集

PHP セキュリティ プログラミング シリーズのお気に入りは、PHP セキュリティ プログラミングに関する知識を収集し、次の目的に役立ちます。 PHP セキュリティ プログラミングは学習リファレンスを提供します

1 PHP Web サイトの一般的なセキュリティ脆弱性と対応する予防策の概要


2 PHP のセキュリティ問題の概要開発


Web サイトの更新を防ぐ 3 つの php メソッドの概要


悪意のある更新を防ぐ 4 つの php メソッドチケット詐欺


5登録グローバルを使用した PHP セキュリティ


6PHP セキュリティ ユーザー送信データ


7PHP セキュリティ マジック引用符 - マジック引用符とは何か、その使用方法


8PHP セキュリティ 隠し PHP スクリプト拡張機能


9PHP セキュリティ ファイル システム セキュリティ - ヌル文字の問題


10PHP セキュリティ エラー レポート


11PHP セキュリティ データベースのセキュリティ - 設計、接続、暗号化


12 PHP セキュリティ データベースのセキュリティ - SQL インジェクションと防止対策


13PHP セキュリティ: ファイル システムのセキュリティと予防策


14PHP セキュリティ: Apache モードでインストールする場合に考えられる攻撃と解決策


15 CGI モードでインストールする場合に考えられる PHP セキュリティの攻撃と解決策


16 PHP セキュリティの概要と一般原則

17 SQL インジェクションを防ぐためのページングパラメータのフィルタリングの例

18 フォームのオフサイトリモート送信を防ぐ php の方法

19 アドレスバー URL からの偽造データの送信を防ぐための php メソッド

20 フォームの繰り返し送信を防ぐためのいくつかの一般的な方法の PHP のまとめ

21 偽のデータが URL からデータを送信するのを防ぐための php メソッド

22 投稿が繰り返しデータを送信するのを防ぐための PHP の簡単な例

23PHP セキュリティは、ソース コードや重要な設定情報の公開を防ぎます

24php は、SQL インジェクション サンプル分析やその他のいくつかの情報の公開を防ぎます一般的な攻撃正規表現

25php による SQL インジェクションのコード例

26php による SQL インジェクションの詳細な説明と防止

27PHP はクロスドメインフォームの送信を防止します

28php セキュリティの犬尾の継続

29 PHP を解析してフォームを防ぐ 繰り返し送信の方法

30 XSS 攻撃とは何ですか? PHP XSS 攻撃防止機能

31php 脆弱性防止戦略、高性能 Web の作成

32php セキュリティ $ を直接使用$_GET 文字エスケープなしで値を取得

33PHP 安全なプログラミング: 共有ホスティングのソース コード セキュリティ

34PHP セキュリティ プログラミング: セッション データ セキュリティの向上

35 PHP セキュア プログラミング: セッション データ インジェクション

36 PHP セキュア プログラミング: ホスティング ファイルディレクトリの参照

37PHP セーフ プログラミング: PHP のセーフ モード

38PHP セーフ プログラミング: ファイル名の操作を防止する

39PHP セキュア プログラミング: ファイルに含まれるコード インジェクション攻撃

40PHP セキュア プログラミング: ファイル ディレクトリの脆弱性推測

41PHP セキュア プログラミング: リモート ファイルを開くリスク

42PHP セキュア プログラミング: シェル コマンド インジェクション

43PHP セキュア プログラミング: ブルート フォース攻撃

44PHP セキュア プログラミング: パスワード スニッフィングとリプレイ攻撃

45PHP セキュア プログラミング: ログイン ステータスを記憶するための安全な方法

46PHP セキュア プログラミング: セッション ハイジャックに対する防御

47PHP セキュア プログラミング: ソース コードの公開を防ぐ

48PHP セキュア プログラミング: バックドア URL に注意する

49PHP セキュリティプログラミング: 正規のセッションを取得するためにセッションを修正

50PHP セキュリティ プログラミング: Cookie の公開によりセッションがハイジャックされる

51PHPセキュア プログラミング: SQL インジェクションの防止

52PHP セキュア プログラミング: URL のセマンティクスからの攻撃

53PHP セキュア プログラミング: ファイルアップロード攻撃に対する防御

54 PHP セキュリティプログラミング: クロスサイトスクリプティング攻撃に対する防御

55 PHPセキュリティ プログラミング: クロスサイト リクエスト フォージェリに対する防御 CSRF

56PHP セキュア プログラミング: フォーム スプーフィング送信について

57PHPセキュア プログラミング: フォームとデータ セキュリティ

58 PHP セキュア プログラミング: データベース アクセス権を公開しない

59 PHP 安全なプログラミング: HTTP リクエスト スプーフィング

60PHP 安全なプログラミング: 出力をエスケープ

61PHP 安全なプログラミング: ユーザーをフィルターinput

62PHP 安全なプログラミング: Web サイトのセキュリティ設計の原則

63PHP 安全なプログラミング: 無関係なものを許可しないエラー メッセージ

64PHP セキュア プログラミング: register_globals のセキュリティ

65PHP セキュア プログラミング: 可用性とデータ追跡

66xss 攻撃を防ぐ php メソッド

67discuz の SQL インジェクション関数を防ぐ php メソッド

著作権に関する声明: この記事はブロガーによるオリジナルの記事であり、ブロガーの許可なく複製することはできません。

3F sinat_26360227昨日 16:08
sssssssssgy
2日フロアwowkk昨日の14:05
こんにちは、広州で働くことに興味がありますか?
1Fndsckm昨日 09:33
大手サイト全般の対応を知りたい
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。