検索
ホームページPHP ライブラリその他の図書館SQLインジェクションを防ぐPHPクラスライブラリ
SQLインジェクションを防ぐPHPクラスライブラリ
<?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

関連記事

SQL インジェクションとデータ エラーを防ぐために文字列のエスケープが重要なのはなぜですか?SQL インジェクションとデータ エラーを防ぐために文字列のエスケープが重要なのはなぜですか?

31Dec2024

文字列エスケープとは何ですか?なぜ重要ですか?文字列エスケープは、引用符やその他の特殊な用途の使用目的を明確にするために使用されるテクニックです。

cURL はどのように PHP での HTTP リクエストを容易にするのですか?cURL はどのように PHP での HTTP リクエストを容易にするのですか?

30Nov2024

cURL: PHP の HTTP リクエスト ハンドラー PHP 開発の分野では、「cURL」という用語が頻繁に登場します。それは図書館です...

PHP および SQL インジェクション攻撃を防ぐためのヒントPHP および SQL インジェクション攻撃を防ぐためのヒント

13Jun2016

PHP および SQL インジェクション攻撃を防ぐためのヒント。 SQL インジェクション攻撃がどのように実装されるか、そしてそれを防ぐ方法について話しましょう。 この例を見てください: コードのコピー コードは次のとおりです: // 想定される入力 $name = "ilia'; DELETE FROM users;";

App Engine 上の Golang アプリケーションでパスワードを保護するにはどうすればよいですか?App Engine 上の Golang アプリケーションでパスワードを保護するにはどうすればよいですか?

30Oct2024

App Engine 上の Golang でパスワードを保護するWeb アプリケーションのパスワード ハッシュに関しては、セキュリティが最も重要です。人気の図書館ですが...

空のチェックボックスを含む HTML フォームを送信するときに PHP で発生する「未定義のインデックス」エラーを防ぐ方法空のチェックボックスを含む HTML フォームを送信するときに PHP で発生する「未定義のインデックス」エラーを防ぐ方法

28Oct2024

空のチェックボックスを含む HTML フォームでの「未定義のインデックス」エラーを解決するチェックボックス、ラジオ グループ、またはその他を含む HTML フォームを送信する場合...

「mysql_real_escape_string」は SQL インジェクションを防ぐのに十分ですか?「mysql_real_escape_string」は SQL インジェクションを防ぐのに十分ですか?

30Nov2024

mysql_real_escape_string: 入力のサニテーションを強化するが、より良い代替手段を採用する場合 SQL インジェクションから保護することが最も重要です...

See all articles