免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1783 | 回复: 0
打印 上一主题 下一主题

sql 注入的简单解决方案 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-01-30 00:18 |只看该作者 |倒序浏览
sql 注入是对 数据库进行 sql 黑客的一种方法,具体是在不规范的程序代码如 php 或 cgi 输入中,加入别的 sql 语句从而获得到一些数据或进行一些不合法的操作。

一般来说, sql 注入有两个条件,一是数据表名被人查出,二是 sql 语句检查出问题,不合法的数据成为 sql 语句的一部分。
简单处理方法:

数据表名要在程序处理中加前缀,让别人不知道数据表名。
如 这样的语句一定有问题

Code       

$db = $cgi->;param('db');

$user_email = $cgi->;param('user_mail');

$sql = qq(select user_id,user_name,user_password from "$db" where user_mail = "$user_mail");

....

解决就是

Code       

select user_id,user_name,user_password from "bbs_user_$db" where user_mail = "$user_mail";

但这方法还是有问题,如果用户输入 user_email = "tsingson@perlchina.org;delete from bbs_user;"
那么 sql 注入就删除用户表了!!!!
所以,最好的方法是用 dbi 的占位符处理


Code       

$sql = qw(select user_id,user_name,user_password from ? where user_mail = ?);

$sth = $dbh->;prepare($sql);

$sth->;do($db,$user_mail);

这样就比直接使用 sql 语句安全多了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP