|
$username = “aaa”;
$pwd = “fdsafda’ or ‘1’=’1”;
$sql = “SELECT * FROM table WHERE username = ‘{$username}’ AND pwd = ‘{$pwd}'”;
echo $sql; //输出 SELECT * FROM table WHERE username = ‘aaa’ AND pwd = ‘fdsafda’ or ‘1’=’1′
?>
传说中的“万能密码”利用的后台代码差不多就是这个渣样.当然,现在几乎不可能存在了,因为人总是会吸取教训的,各种安全开发的理念还是逐渐深入人心了.
3、数据库
站在运维角度,数据库注入中的运维“三宗罪”分别是:
(1)空密码/弱密码.“空,那么空”,我耳朵里突然想起来金志文的《空城》.
mysql> select user,host,password from mysql.user;
+——+———–+———-+
| user | host | password |
+——+———–+———-+
| root | localhost | |
| root | 127.0.0.1 | |
| root | ::1 | |
(2)外网开放.数据库开放外网,还不改端口(改了也没用,因为现在都是全端口扫描的),这不是找抽吗?
iptables-save | grep 3306
-A INPUT -p tcp -m tcp –dport 3306 -j ACCEPT
(3)用户权限控制不当.按照最小权限原则,只给账号需要的最小权限即可.
mysql> show grants for gs@101.101.101.101;
+———————————————–+
| Grants for gs@101.101.101.101;
+———————————————–+
| GRANT ALL PRIVILEGES ON `gameserver`.* TO ‘wscs_gs’@’101.101.101.101’
五、数据库注入攻击防御
上文已介绍了数据库注入的原因和形式,下文将从代码、数据库、Web Server和数据分析四个层面介绍如何防御数据库注入攻击.
1、代码
SDL(Security Develop Lifecircle):软件开发应当遵循“安全开发生命周期”,软件测试需要增加安全测试的白盒与黑盒测试.
用户是不可信的:输入输出都应当被过滤,至少应满足以下4个编码规则. (编辑:清远站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|