防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
相关文章

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

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

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

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

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


热工具

热门文章
两个点博物馆:邦格荒地地点指南
28 Feb 2025
手游攻略
击败分裂小说需要多长时间?
07 Mar 2025
手游攻略
在哪里可以在怪物猎人荒野中找到地球晶体
27 Feb 2025
手游攻略
仓库:如何复兴队友
04 Mar 2025
手游攻略
公众号网页更新缓存难题:如何避免版本更新后旧缓存影响用户体验?
04 Mar 2025
html教程