注入缺陷(Injection Flaws)
第一部分 SQL注入
注入攻击是WEB安全领域中一种最为常见的攻击方式。在“跨站脚本攻击”一章中曾经提到过,XSS本质上也是一种针对HTML的注入攻击。而在“我的安全世界观” 一章中,
提出一个安全设计原则----“数据与代码分离”的原则,它可以说是专门为了解决注入攻击而生的。
注入攻击的本质,是把用户输入的数据当做代码来执行。这里有两个关键条件,第一个是用户能够控制输入;第二个是原本程序要执行的代码,拼接了用户输入的数据。
----------《白帽子讲WEB安全》
SQL注入的本质就是通过构造特殊的用户输入,绕过代码限制,使用户输入的数据带入数据库执行,获得更多的信息或更大的权限。解决办法如上所述的
“数据与代码分离”,数据库只处理数据。比如:
http://www.aol.com/items.php?id=2 and 1=1 --> Select id,username,itemsCon from items where id=2 and 1=1;
防御SQL注入的最佳方式,就是使用预编译语句,绑定变量。