一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

mysql sql防注入简介与防注入实例

时间:2010-05-17 编辑:简简单单 来源:一聚教程网

下面我们根据我编程序的经验来写一篇关于mysql教程 sql防注入简介与防注入实例吧。

sql防注入简介:

sql查询是一种用来数据与用户进行交互的文本语言,sql利用外部接将用户提交的数据发送给mysql数据库教程服务器进行处理,如果没有严密的过滤,可能导致数据丢失,如被删除,修改,而这样问题是网络管理员很难做事的,他们不能通过打系统被丁,或安装防火强可以控制了,。

下面我们来看一个简单的用户登陆实例。

一,创建用户表user

create table user (

userid(int) not null auto_increment,

username not null default'',

userpass not null default '',

primary key(userid)

)type= myisam auto_increment=1;

好表就创建成功了。我们先给用户表user插入一条记录

insert into 'user' values(1,'www.111com.net','123456');

现在来做用户登陆代码

php教程

$root ='localhost';

$dbName='root';

$dbpwd ='123456';

$db = 'userdb';

mysql_connect($root,$dbName,$dbpwd) or die('数据库连接失败');

$sql ="select * from user where username='$username"  and password='$pwd';

$result =mysql_db_query($db,$sql);

$ufo = mysql_fetch_array( $result );

if( $ufo )

{

echo '登陆成功';

}

else

{

echo '登陆失败';

}

好现在我们来做一个实例提供一个url给上面的php处理页面

http://www.111com.net/test/a.php?user=www.111com.net' or '  1= 1;

结果发现这条sql可以成功登陆我们的系统,而不是我想要的密码等12346,好下面我们再来看个实例

http://www.111com.net/test/a.php?user=www.111com.net' /*;

http://www.111com.net/test/a.php?user=www.111com.net' or ' #;

这样只要用户名正确同样可以登陆系统,在sql语句中/*与#是注掉后面的sql,

好了,根据上面的问题我们写了一个自定义函数来过滤大部sql注入的防注入函数

function safesql()

{

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

if( preg_match( $re ,$username)

{

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

exit;

}

else

{

return turn;

}

最后总结一下:

注明:本站原创文章转载注明来源www.111com.net

热门栏目