JDBC操作数据库08(sql注入问题)

sql注入:

SQL注入(SQLi)是一种注入攻击,,可以执行恶意SQL语句。它通过将任意SQL代码插入数据库查询,使攻击者能够完全控制Web应用程序后面的数据库服务器。攻击者可以使用SQL注入漏洞绕过应用程序安全措施;可以绕过网页或Web应用程序的身份验证和授权,并检索整个SQL数据库的内容;还可以使用SQL注入来添加,修改和删除数据库中的记录。

sql注入步骤:
  1. 寻找注入点,构造特殊的语句
    传入SQL语句可控参数分为两类
    a.斜体样式数字类型,参数不用被引号括起来,如?id=1
    b.其他类型,参数要被引号扩起来,如?name=“phone”
  2. 用户构造SQL语句(如:‘or 1=1#;admin’#
  3. 将SQL语句发送给DBMS数据库
  4. DBMS收到返回的结果,并将该请求解释成机器代码指令,执行必要得到操作
  5. DBMS接受返回结果,处理后,返回给用户

前一篇的从数据库中查询用户登录信息的sql语句并不是安全的,存在sql注入的风险
如当输入以下密码,发现账号和密码都不对竟然登录成功了

请输入用户名:
张小风
请输入密码:
a’ or ‘1’='1
登录成功

分析:

select * from userlogin where loginname=‘张小风’ and passwd=‘a’ or ‘1’=‘1’
loginname=‘张小风’ and passwd=‘a’ 为假
‘1’=‘1’ 真
相当于
select * from userlogin where true; 查询了所有记录

让用户输入的密码和 SQL 语句进行字符串拼接。用户输入的内容作为了 SQL 语句语法的一部分,改变了
原有 SQL 真正的意义,以上问题称为 SQL 注入。要解决 SQL 注入就不能让用户输入的密码和我们的 SQL 语句进
行简单的字符串拼接。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值