Php注入的安全防范方法

Php注入的安全防范通过上面的过程,我们可以了解到php注入的原理和手法,当然我们也同样可以制定出相应该的防范方法: 
首先是对服务器的安全设置,前面的windows服务器的安全设置我们已经讲了,不再重复,这里主要是php+mysql的安全设置和linux主机的安全设置。对php+mysql注射的防范,首先将magic_quotes_gpc设置为On,display_errors设置为Off,如果id型,我们利用intval()函数将其转换成整数类型,如代码: 
$id=intval($id); 
mysql_query=”select *from example where articieid=’$id’”;或者这样写:mysql_query("SELECT * FROM article WHERE articleid=".intval($id)."") 


如果是字符型就用addslashes()过滤一下,然后再过滤”%”和”_”如: 
$search=addslashes($search); 
$search=str_replace(“_”,”\_”,$search); 
$search=str_replace(“%”,”\%”,$search); 
当然也可以加php通用防注入代码: 
/************************* 
PHP通用防注入安全代码 
说明: 
判断传递的变量中是否含有非法字符 
如$_POST、$_GET 
功能: 
防注入 
**************************/ 
//要过滤的非法字符 
$ArrFiltrate=array("'",";","union"); 
//出错后要跳转的url,不填则默认前一页 
$StrGoUrl=""; 
//是否存在数组中的值 
function FunStringExist($StrFiltrate,$ArrFiltrate){ 
foreach ($ArrFiltrate as $key=>$value){ 
if (eregi($value,$StrFiltrate)){ 
return true; 


return false; 

//合并$_POST 和 $_GET 
if(function_exists(array_merge)){ 
$ArrPostAndGet=array_merge($HTTP_POST_VARS,$HTTP_GET_VARS); 
}else{ 
foreach($HTTP_POST_VARS as $key=>$value){ 
$ArrPostAndGet[]=$value; 

foreach($HTTP_GET_VARS as $key=>$value){ 
$ArrPostAndGet[]=$value; 


//验证开始 
foreach($ArrPostAndGet as $key=>$value){ 
if (FunStringExist($value,$ArrFiltrate)){ 
echo "alert(/"Neeao提示,非法字符/");"; 
if (empty($StrGoUrl)){ 
echo "history.go(-1);"; 
}else{ 
echo "window.location=/"".$StrGoUrl."/";"; 

exit; 


?> 
/************************* 
保存为checkpostandget.php 
然后在每个php文件前加include(“checkpostandget.php“);即可 
**************************/ 


另外将管理员用户名和密码都采取md5加密,这样就能有效地防止了php的注入。 

还有服务器和mysql也要加强一些安全防范。 

对于linux服务器的安全设置: 

加密口令,使用“/usr/sbin/authconfig”工具打开密码的shadow功能,对password进行加密。 

禁止访问重要文件,进入linux命令界面,在提示符下输入: 

#chmod 600 /etc/inetd.conf    //改变文件属性为600 

#chattr +I  /etc/inetd.conf     //保证文件属主为root 

#chattr –I  /etc/inetd.conf     // 对该文件的改变做限制   

禁止任何用户通过su命令改变为root用户 

在su配置文件即/etc/pam.d/目录下的开头添加下面两行: 

Auth  sufficient  /lib/security/pam_rootok.so debug 

Auth  required  /lib/security/pam_whell.so group=wheel 

删除所有的特殊帐户 

#userdel  lp等等    删除用户 

#groupdel lp等等    删除组 

禁止不使用的suid/sgid程序 

#find / -type f \(-perm -04000  - o –perm -02000 \) \-execls –lg {} \; 

 
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值