1.什么是SQL注入?

1.正常的web端口访问 正常访问是web传入程序设计者所希望的参数值,由程序查询数据库完成处理后,呈现结果页面给用户。
2.SQL注入是如何访问? (1)SQL注入也是正常的web端口访问 (2)只是传入的参数值并非是程序设计者所希望的,而是传入了嵌套SQL代码的参数值 (3)参数值利用程序处理注入者的逻辑,按注入者的期望执行数据库查询 (4)甚至页面呈现按SQL注入者期望显示
SQL注入:是通过应用程序把带有SQL代码的参数传递给数据库引擎。

2.为什么要深入了解SQL注入?

1.SQL注入危害大 黑客最终的目标是数据,SQL注入是直达数据库引擎,甚至提权后可以与系统层交互,敏感数据可能被泄露、破坏的风险。 2.SQL注入隐秘性强 SQL注入也是正常的web端口访问,系统或者数据库管理员不易发觉,可能被攻击者长期控制系统或者数据库。 3.SQL注入具有普遍性 SQL关系数据库行业的通用标准,SQL注入不仅是MySQL的问题,也是其它使用SQL的数据库的问题,有证据表明,60%以上有网站具有SQL注入漏洞。 4.知己知彼,目标为防 深入了解SQL注入的终极目标是做好防范。提高数据安全意识,把数据安全提高到一定的战略高度。

3.程序端SQL注入工作原理

1.正常的访问 $sql=”SELECT FROM users WHERE login =’$uname’ AND password =’$pwd’” PHP程序传入结果参数: $uname=’huangxifeng’ $pwd=’hxf123’ 结果:
SELECT
FROM users WHERE login = ‘huangxifeng’ AND password = ‘hxf123’
2.SQL注入访问 PHP程序传入结果参数: $uname= ‘ ‘ or 1=1 — $pwd=’hxf123’ 结果: SELECT * FROM users WHERE login = ‘ ‘ or 1=1 —AND password = ‘ hxf123 ‘

4.SQL注入漏洞的根本原因

(1)SQL注入漏洞是应用程序的问题,而不是系统或者数据库的问题。
SQL注入本质的原因是人对数据安全的意识薄弱。或者即使有安全的意识,而程序员对如何防范无从下手。因此导致程序没有对用户输入数据的合法性进行检查,对传入参数的安全性没有完全的过滤。