<?php class sqlsafe { private $getfilter = "'|(and|or)\b.+?(>|<|=|in|like)|\/\*.+?\*\/|<\s*script\b|\bEXEC\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)\s+(TABLE|DATABASE)"; private $postfilter = "\b(and|or)\b.{1,6}?(=|>|<|\bin\b|\blike\b)|\/\*.+?\*\/|<\s*script\b|\bEXEC\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)\s+(TABLE|DATABASE)"; private $cookiefilter = "\b(and|or)\b.{1,6}?(=|>|<|\bin\b|\blike\b)|\/\*.+?\*\/|<\s*script\b|\bEXEC\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)\s+(TABLE|DATABASE)"; public function __construct() { foreach($_GET as $key=>$value){$this->stopattack($key,$value,$this->getfilter);} foreach($_POST as $key=>$value){$this->stopattack($key,$value,$this->postfilter);} foreach($_COOKIE as $key=>$value){$this->stopattack($key,$value,$this->cookiefilter);} } public function stopattack($StrFiltKey, $StrFiltValue, $ArrFiltReq){ if(is_array($StrFiltValue))$StrFiltValue = implode($StrFiltValue); if (preg_match("/".$ArrFiltReq."/is",$StrFiltValue) == 1){ $this->writeslog($_SERVER["REMOTE_ADDR"]." ".strftime("%Y-%m-%d %H:%M:%S")." ".$_SERVER["PHP_SELF"]." ".$_SERVER["REQUEST_METHOD"]." ".$StrFiltKey." ".$StrFiltValue); showmsg('您提交的参数非法,系统已记录您的本次操作!','',0,1); } } public function writeslog($log){ $log_path = CACHE_PATH.'logs'.DIRECTORY_SEPARATOR.'sql_log.txt'; $ts = fopen($log_path,"a+"); fputs($ts,$log."\r\n"); fclose($ts); } }
このクラス ライブラリは、最初に関数パラメータを構築し、次にログを確認して書き込み、最後に SQL インジェクション ログを確認します。 SQL インジェクションを防ぐための非常に便利な PHP クラス ライブラリです。
このサイトのすべてのリソースはネチズンによって提供されたもの、または主要なダウンロード サイトによって転載されたものです。ソフトウェアの整合性をご自身で確認してください。このサイトのすべてのリソースは学習の参考のみを目的としています。商業目的で使用しないでください。そうでない場合は、すべての結果に対して責任を負うことになります。侵害がある場合は、削除するためにご連絡ください。連絡先情報: admin@php.cn
関連記事
13 Jul 2016
PHP は SQL インジェクションを防ぐ効果的な方法です。データのセキュリティとインジェクションを防ぐために、$_GET で取得した文字列をフィルタリングする必要があります。最初はフィルタリング関数を自分で書きました。その後、PHP チュートリアルに付属しているフィルタリング関数を見つけたので、addla を追加しました。
21 Jun 2023
デジタル時代の到来に伴い、図書館は徐々にデジタル変革を実現し、従来の紙ベースの管理からデジタル管理に徐々に移行しています。デジタル管理の過程で、Web サイト アプリケーションを使用して図書館を管理することは、図書館が書籍、貸出記録、ユーザー アカウント、その他の情報をより適切に管理できるため、非常に一般的な方法になりました。 Yii フレームワークを使用して図書館 Web サイトを作成することは、非常に簡単かつ効果的な方法になりました。この記事では、Yii フレームワークを使用して図書館 Web サイトを作成する方法を紹介します。 Y
13 Jun 2016
図書館管理システムの管理者を確認する問題について、私はPHPの初心者で、研究書にある図書館管理システムのソースコード一式をwamp5の統合環境にインストールしました。 MYSQL の DATA フォルダーとその他の設定が完了すると、login.php インターフェイスのアカウントとパスワードが正しい場合でも、チェックログ コードを投稿するのを手伝ってください。 <?phps
29 Jul 2016
図書館管理システムの使用例図: 図書館管理システムの使用例図 図書館管理プログラム (1): このレベルのプログラムで使用されるデータ テーブル構造: # ------------------- --- ---------------------------------- # # データテーブル構造 'author' # CREATE TABLE author ( author_id int (6) DEFAULT '0' NOT NULL auto_increment、first_name varchar(20)
13 Jul 2016
PHP で SQL インジェクション分析を防ぐ方法、PHP は SQL インジェクションを防ぎます。 PHP で SQL インジェクション分析を防止する方法、PHP は SQL インジェクションを防止します。 この記事では、PHP で SQL インジェクションを防止する方法を分析します。参考のためにみんなで共有してください。具体的な分析は次のとおりです。 1. 問題の説明:
Hot tools Tags
Hot Tools
依存関係注入コンテナー用の PHP ライブラリ
依存関係注入コンテナー用の PHP ライブラリ
50 個の優れた古典的な PHP アルゴリズムのコレクション
古典的な PHP アルゴリズム、優れたアイデアを学び、思考を広げます
画像を最適化するための小さな PHP ライブラリ
画像を最適化するための小さな PHP ライブラリ