学员服务
安防工程师培训 安防工程师培训 安防工程师培训 安防工程师培训
您现在的位置:首页 > 编程园地 > PHP编程
mysql防注入的sql语句写法
时间:2010-07-01  来源:本站原创  作者:yuge   浏览次数:

经常听说sql注入式攻击,其实不是mysql独有的,所有的数据库都存在注入式攻击,包括mssql,oracle,db2等。

究竟是什么sql注入式攻击呢?

其实,它就是攻击者通过构建特殊的sql语句,进行数据库攻击,实际就是获取一些信息,或是修改一些数据,以达到攻击者目的。

防止攻击除了我们上次说的php安全之数据过滤之外,当然就是我们sql语句的写法了。

比如一个登录语句:

select * from user where username='$admin' and pwd='$admin'

通常我们都是这么写的是吧!

若是登录者提交过来的数据使我们的sql语句变成了以下形式:

select * from user where username='aa' #and pwd='$admin';
select * from user where username='aa' /*and pwd='$admin';

如果用户名对了,那是不是也能实现登录呢?

又如:select * from user where username='aa' or 0=0 /*and pwd='$admin';
就算用户名不对,也可以登录了。

但如果我们将我们的语句改成:
select * from user where username='$admin' ;

然后从数据库读出的密码同,用户提交过来的密码比对,是否更加安全一点点呢?

再加上我们的过滤函数safestr()

function safestr()

{

$re = "/(|'%27|;|(%3d)|(|(%28)|)|(%29)|(/*)|(%2f%2a)|(%2a%2f)|+|(%2b)|(<|(%3e)|(%3e)|(--))|[|%5d)/";

if( preg_match( $re ,$username)

{

echo'请不要非法sql注入';

exit;

}

else

{

return turn;

}

这也安全也都只是相对安全些,如果相对安全些,那么我们定的程序就更容易攻破一些对吧!

版权归原作者所有,内容仅供参考学习,不得用于商业用途。
会员中心 | 缴费方式 | 在线咨询 | 投诉建议 | 友情链接 | 技术资讯 | 下载中心 | 产品推荐 | 解决方案
北京市朝阳区龙腾畅晓培训学校(北京龙腾畅晓科技有限公司全资举办) 版权所有
电话:010-84804842  邮箱:web@95px.com
地址:北京市朝阳区北苑路40号六号楼二层  邮编:100012
网站备案号:京ICP备17008362号-1

京公网安备 11010502032312号