SQL注入原理-简单渗透及修复规范

SQL注入原理:

        攻击者通过构造带有恶意语句的输入数据,修改或查询数据库中的数据,甚至获取管理员权限,通常会将用户提供的输入参数组合成SQL查询语句来与数据库进行交互

        攻击者可以在输入框、网址后面添加参数等任意可输入数据的地方,向数据处理模块输入一些特殊字符,例如'、"、/*等,直接变成恶意的SQL语句,然后就做一些查询、修改、删除数据、绕过身份验证并获取管理员权限等等

简单验证:

确认注入点,通过某个输入框提交的参数是否能够直接拼接到SQL语句中。

1、尝试输入'or' 1=1'('or' 1=1'是一个经典的SQL注入语句,可绕过登录验证,还有其他很多万能密码,可自行选择输入),观察页面的响应是否与正常情况有差异,列表展示情况等查看

2、尝试使用其他的SQL注入语句,例如'and' 1=2'、'union select xxx'等,查看页面响应是否与预期相符。

3、在注入语句加上sleep(n),观察响应时间的变化来猜测n的值;

SELECT * FROM users WHERE username = 'admin' and sleep(5)

4、在数据库中插入一些特定的数据,查看响应页面是否有对应信息的输出

编码注意事项:

方法一:

使用预编译;预编译是指使用占位符接收数据替换为SQL语句,占位符不依赖于字符串连接来创建要发送到数据库的SQL语句。在Java中,通过java.sql.PreparedStatement接口的prepareStatement方法对SQL进行预编译,达到防止SQL注入的目的;

方法二:

使用安全存储过程;使用安全存储过程效果和使用预编译语句类似,区别是存储过程将SQL语句定义在数据库中;

方法三:

转义用户输入;为修复SQL注入漏洞,将所有SQL语句重写成预编译语句或存储过程是非常耗时的,也会对系统性能造成影响,这时可以将用户输入的命令进行转义,将可能恶意执行的字符转义为无法执行的字符串。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值