前提条件是我们需要有服务器的管理权限,就是可以修改php.ini文件了,下面我来介绍修改php配置文件来防范sql注入方法有需要学习的朋友可参考。
为了安全起见,可以打开“php.ini”文件的安全模式,设置“safe_mode=on”;显示 php 执行错误信息的 “display_erros”选项如果打开的话,将会返回很多可利用的信息给入侵者,因此要将其设置为“display_erros=off”;这样,php 函数执行错误后的信息将不会在客户端的浏览器中进行显示。
此外,在文件还有一个很重要的配置选项,如果将其中的“magic_quotes_gpc”项设置为“on”,php 程序会自动将用户提交的变量是含有的“'”、“”、“”自动转为含有反斜线的转义字符。这个选项类似 asp 程序中的参数过滤,可以对大部分字符型注入攻击起到防范的作用。
一段程序非常不错,如果你没有服务器管理权限
代码如下 复制代码
| private $postfilter = \b(and|or)\b.{1,6}?(=|>| private $cookiefilter = \b(and|or)\b.{1,6}?(=|>| /**
* 构造函数
*/
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);
}
}
/**
* sql注入日志
*/
public function writeslog($log){
$log_path = cache_path.'logs'.directory_separator.'sql_log.txt';
$ts = fopen($log_path,a+);
fputs($ts,$log.rn);
fclose($ts);
}
}
?>
http://www.bkjia.com/phpjc/629633.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/629633.htmltecharticle前提条件是我们需要有服务器的管理权限,就是可以修改php.ini文件了,下面我来介绍修改php配置文件来防范sql注入方法有需要学习的朋友可...