mysql防注入的sql语句写法
经常听说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;
}
这也安全也都只是相对安全些,如果相对安全些,那么我们定的程序就更容易攻破一些对吧!
关健词:mysql
新文章:
- CentOS7下图形配置网络的方法
- CentOS 7如何添加删除用户
- 如何解决centos7双系统后丢失windows启动项
- CentOS单网卡如何批量添加不同IP段
- CentOS下iconv命令的介绍
- Centos7 SSH密钥登陆及密码密钥双重验证详解
- CentOS 7.1添加删除用户的方法
- CentOS查找/扫描局域网打印机IP讲解
- CentOS7使用hostapd实现无AP模式的详解
- su命令不能切换root的解决方法
- 解决VMware下CentOS7网络重启出错
- 解决Centos7双系统后丢失windows启动项
- CentOS下如何避免文件覆盖
- CentOS7和CentOS6系统有什么不同呢
- Centos 6.6默认iptable规则详解