php网站如何防止sql注入?
2016-07-07 15:04 来源:www.chinab4c.com 作者:ecshop专家
网站的运行安全肯定是每个站长必须考虑的问题,大家知道,大多数黑客攻击网站都是采用sql注入,这就是我们常说的为什么最原始的静态的网站反而是最安全的。 今天我们讲讲PHP注入的安全规范,防止自己的网站被sql注入。 如今主流的网站开发语言还是php,那我们就从php网站如何防止sql注入开始说起: Php注入的安全防范通过上面的过程,我们可以了解到php注入的原理和手法,当然我们也同样可以制定出相应该的防范方法: 首先是对服务器的安全设置,这里主要是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/目录下的开头添加下面两行: Authsufficient/lib/security/pam_rootok.so debug Authrequired/lib/security/pam_whell.so group=wheel 删除所有的特殊帐户 #userdellp等等 删除用户 #groupdel lp等等 删除组 禁止不使用的suid/sgid程序 #find / -type f \(-perm -04000- o –perm -02000 \) \-execls –lg {} \; 以上是我转载过来的,大家防止SQL注入都用啥方法?期待和大家的交流。 |
回答:
你调试了没有 可以不可以防止sql注入 |
最近更新
常用插件
- ecshop2.7.1打印发货单插件
ecshop2.7.1打印发货单插件介绍:ecshop2.7.1和以前的ecshop版本不一样,ecs...
- ecshop商品分类名称增加样
ecshop插件介绍:本插件可以方便在后台管理,为ecshop商品分类名称增加样...
- ecshop二次商品订购人信息
ecshop二次商品订购人信息填写插件,有时候给朋友送花,或者是送礼品的...
- ecshop分类批量扩展插件
ecshop分类批量扩展插件,这个插件是ecshop插件里面比较核心的插件。我们...
- ecshop二次开发详细页面生
插件介绍: ECSHOP系统,在很多时候,很多商品没有人购买,不但购买的人...
ecshop热门问答
ecshop热门资料
ecshop家庭
ecshop天都
ecshop互联网络
ecshop订单汇总
ecshop点击数
ecshop产品模板
ecshop品牌图标
ecshop多属性筛选
ecmall邮件
ecmallconf
ecshop模块
ecshop自动检测
ecshop网络搜索
ecshop商品折扣
ecshopLativ
ecshop修改尺寸
ecshop水晶
ecshop序列
ecshop万网
ecshop我们
ecshop原因
ecshop担保
ecshop单功能
ecshopsqldate
ecshop最低价
ecshop轮番
ecshopECSHOP空白
ecshop排序功能
ecshop假死
ecshop顶用