首页 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

相关文章

哪个 PHP 库提供卓越的 SQL 注入防护:PDO 还是 mysql_real_escape_string? 哪个 PHP 库提供卓越的 SQL 注入防护:PDO 还是 mysql_real_escape_string?

22 Oct 2024

PHP 数据对象 (PDO) 为查询转义提供了比 mysql_real_escape_string 更好的替代方案。 PDO 的优点包括数据库独立性、自动转义、参数替换和改进的错误处理,使其成为更加健壮的、e

PHP中的Prepared语句如何有效防止SQL注入攻击? PHP中的Prepared语句如何有效防止SQL注入攻击?

23 Dec 2024

如何阻止 PHP 中的 SQL 注入攻击 SQL 注入仍然是 Web 应用程序的主要威胁,因为它使攻击者能够操纵数据库......

Go 的'database/sql”库如何防止 SQL 注入? Go 的'database/sql”库如何防止 SQL 注入?

13 Dec 2024

在 Go 中使用“database/sql”防范 SQL 注入 在构建 Web 应用程序时,防止 SQL 注入攻击至关重要。经过...

Node-MySQL 中的字符串转义如何防止 SQL 注入? Node-MySQL 中的字符串转义如何防止 SQL 注入?

03 Dec 2024

使用字符串转义防止 Node.js 中的 SQL 注入漏洞 SQL 注入是一种常见的攻击类型,可能会危害数据库...

PDO 准备语句是针对 SQL 注入的终极防御吗? PDO 准备语句是针对 SQL 注入的终极防御吗?

27 Oct 2024

使用 PDO 准备语句保护您的数据库PDO 准备语句以其防止 SQL 注入的能力而闻名......

参数化查询如何防止 Python 的 SQLite 交互中的 SQL 注入? 参数化查询如何防止 Python 的 SQLite 交互中的 SQL 注入?

05 Jan 2025

防止 Python 中的 SQL 注入问题:您有一个 Python 脚本,它更新 SQLite 数据库中的 char(80) 值。字符串值...

See all articles