<?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 クラス ライブラリです。
このサイトのすべてのリソースはネチズンによって提供されたもの、または主要なダウンロード サイトによって転載されたものです。ソフトウェアの整合性をご自身で確認してください。このサイトのすべてのリソースは学習の参考のみを目的としています。商業目的で使用しないでください。そうでない場合は、すべての結果に対して責任を負うことになります。侵害がある場合は、削除するためにご連絡ください。連絡先情報: [email protected]
PHP アプリケーションで SQL インジェクションを防ぐ方法
30 Nov 2025
プリペアド ステートメント (PDO または MySQLi) を使用して SQL インジェクションを防止し、ユーザー入力がデータとして処理されるようにします。入力検証、フィルタリング、最小権限の原則を組み合わせて、インジェクションのリスクを効果的にブロックします。
PHP アプリケーションでの SQL インジェクションを防ぐ方法。
11 Dec 2025
プリペアド ステートメント (PDO または MySQLi) を使用して SQL ロジックとユーザー入力を分離し、入力がコードの実行ではなくデータとして扱われるようにします。 2. 入力検証とフィルタリングを組み合わせて、データ型、長さ、形式を制限します。 3. SQL クエリを構築するために文字列のスプライシングを回避し、動的スプライシングを無効にします。 4. 潜在的な攻撃の影響を軽減するために、最小権限のデータベース アカウントを使用します。
PHP での SQL インジェクションを防ぐには? (プリペアドステートメントあり)
24 Dec 2025
PHP で SQL インジェクションを防ぐ最も効果的な方法は、準備されたステートメント (PDO または MySQLi) をパラメーター化されたクエリで使用することです。 SQL ロジックとデータを分離し、動的スプライシングを無効にし、パラメータ化されていない部分を検証し、古いエスケープ関数を無効にする必要があります。
図書館管理プログラム (3)
13 Jun 2016
図書館管理プログラム (3)。書籍のクエリ部分: ? if(!$UploadAction): ? //このプログラムは書籍のタイトル、著者、出版社の情報を出力するように設計されています。 //編集者:孔秀祥。日付: 2001/3/25? HTMLHEAD TITLE 書誌クエリ
MySQL データベースを使用して PHP で SQL インジェクションを防ぐ方法
30 Nov 2025
PHP での SQL インジェクションを防ぐ最も効果的な方法は、プリペアド ステートメントの使用です。 1. PDO または MySQLi を使用して、$pdo->prepare("SELECT*FROMusersWHEREemail=?") などのプレースホルダーを含む準備済みステートメントを作成します。 2.execute()またはbind_para m()を通じてユーザー入力をバインドし、データが安全にエスケープされるようにします。 3. SQL を直接結合したり、mysqli_real_escape_string() のみに依存したりすることは避けてください。 4. 入力検証 (メールボックス形式をチェックする filter_var() など) と組み合わせて、セキュリティを強化します。前処理ステートメントが主に使用され、入力検証が補足され、二重化されます。
Java Web アプリケーションでの SQL インジェクションを防ぐ方法
10 Nov 2025
SQL インジェクションを防ぐ最も効果的な方法は、SQL ロジックをデータから分離するパラメーター プレースホルダーを備えた PreparedStatement を使用することです。たとえば、ユーザー入力を直接クエリに連結する代わりに、PreparedStatement with?プレースホルダーを使用します。これにより、入力が確実にデータとして扱われます。
ホットツール Tags
人気のツール
50 個の優れた古典的な PHP アルゴリズムのコレクション
古典的な PHP アルゴリズム、優れたアイデアを学び、思考を広げます
依存関係注入コンテナー用の PHP ライブラリ
依存関係注入コンテナー用の PHP ライブラリ
画像を最適化するための小さな PHP ライブラリ
画像を最適化するための小さな PHP ライブラリ




