SQL注入

来源:互联网 发布:王者荣耀 芈月 知乎 编辑:程序博客网 时间:2024/06/05 06:49

SQL注入(SQL injection),是应用程序在数据库层的安全漏洞,
简而言之,在输入的字符串(web表单,输入域名或页面请求)中注入SQL语句,程序未设置对字符串的检测,而导致数据库服务器将该字符串认为是正确的SQL语句执行,对数据库进行入侵。

原因:
1、应用程序以字符串联结的方式组合SQL语句。
2、应用程序连接数据库时使用了权限过大的账号
3、过分信任用户的输入,未限制输入字符数,未对用户输入的数据进行命令的潜在检测。
(用户的输入 的用途是什么,账号,密码 对数据库的访问。)

原理:
1、SQL命令可查询,添加,删除,更新等操作,命令的串接,以分号作为不同命令的区别

2、SQL命令中对于传入的字符串参数用单引号括起来

3、SQL命令可以注入注解

4、组合SQL命令字符串,未针对单引号进行替换,会导致该字符串被填入命令时,受到修改
StrSQL = "SELECT * FROM users WHERE(name = '"+ username +"') and (pw = '"+ password +"');"

username = "1' OR '1' = '1"

password = "1' OR '1' = '1"
这里是java的语法。

sql注入技术

1.强制产生错误
2.采用非主流通道技术
3.使用特殊的字符
4.使用特殊的字符
5.使用条件语句
6.利用存储过程
7.避开输入过滤技术
8.判断技术

sql注入的防范

1.使用参数化的过滤性语句

2.输入验证

3.错误消息处理

4.加密处理

5.存储过程来执行所有的查询

注入式攻击的原理就是程序命令与用户输入没有泾渭分明
注入攻击前的三件事
1.确认web应用程序所使用的技术
2.确认所有可能的输入方式
3.查找可以用于注射的用户输入

0 0