1. SQL注入的概念:
1.1 概念: SQL注入就是将SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行的恶意SQL命令.
1.2 SQL如何产生:
1) WEB开发人员无法保证所有的输入都已经过滤
2) 数据库未做相应的安全配置
3)攻击者利用发送给SQL服务器的输入参数构造可执行的SQL代码
1.3 攻击方式: get请求、post请求、http头信息、cookie等
1.4 如何预防(开发所做):
1) 严格检查输入变量的类型和格式
2) 过滤和转义特殊字符
在username这个变量前进行转义,对'、"、\等特殊字符进行转义,如:php中的addslashes()函数对username参数进行转义
3) 利用mysql的预编译机制
1.5 攻击例子:
1) 用户登录注入:
用户输入账户跟密码之后相当于调用SQL语句进行数据库用户查询,
相当于: SELECT * FROM user WHERE username = 'USER' ADN password = '123456'
当用户名输入改为:USER'--(单引号闭合user左边的单引号),密码随意输入,如:111,然后点击提交按钮
等价于SQL语句:SELECT * FROM user WHERE username = 'USER'--'ADN password = '123456'
这就导致了输入一个错误的密码或者不输入密码就可登录用户名为'user'的账号,这是一个危险的操作
<