首页 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 注入是一种常见的攻击类型,可能会危害数据库...

如何防止ThinkPHP中的SQL注入漏洞? 如何防止ThinkPHP中的SQL注入漏洞?

14 Mar 2025

本文讨论了通过参数化查询来防止ThinkPhp中的SQL注入漏洞,避免使用原始SQL,使用ORM,常规更新和正确的错误处理。它还涵盖了确保数据库查询和验证的最佳实践

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

27 Oct 2024

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

See all articles