SQL有效注入例子及防止

1.什么是 SQL 注入?
通过构造特殊的输入参数传入Web应用,导致后端执行了恶意 SQL通常由于程序员未对输入过滤,直接动态拼接 SQL 产生可以使用开源工具 sqlmap,SQLninja 检测,SQL注入就是一种通过操作输入来修改后台SQL语句达到代码执行进行攻击目的的技术。构造动态字符串是一种编程技术,它允许开发人员在运行过程中动态构造SQL语句。开发人员可以使用动态SQL来创建通用、灵活的应用。动态SQL语句是在执行过程中构造的,它根据不同的条件产生不同的SQL语句。当开发人员在运行过程中需要根据不同的查询标准来决定提取什么字段(如SELECT语句),或者根据不同的条件来选择不同的查询表时,动态构造SQL语句会非常有用。
2.SQL 注入的原理
Sql注入是比较常见的网络攻击方式,下面了解一下web网站架构。Web网站架构总体结构由Web服务器端,客户终端和通信协议三大部分组成

在这里插入图片描述
表示层是指用户交互的界面。用户在使用时在表示层输入需求,然后这个信息就传送给服务器,再传输给数据库,服务器将后台反馈的结果返回给用户。逻辑层表示层提供请求的应答,为数据层提供参数需求,数据层主要是对用户提交的涉及到数据查询做出回应
(上图及文字解析来源于博客借鉴)
3.SQL 注入的现实案例
既然sql注入那么“出名”,现实生活中肯定有它相关的案例。相信都听过某某大学的学生在一次考试后,通过sql注入修改自己的考试成绩。这是比较小型的案例。

在这里插入图片描述
这是个比较大型的案例。把SQL注入写得明明白白。
4.SQL 注入的例子
SQL注入那么危险,很多浏览器早早做出了防御。现在只能在数据库演示了。

在这里插入图片描述
上面图中:其中的username:ljh password:123
假如这是项目的用户,那么登录的时候获取账号和密码才能进来。而通过SQL注入,则知道密码了就可以进来。
例如:SELECT * FROM users
where username = ‘ljh’ and password = ‘123’;
通过上面的SQL语句,查询出该记录的全部语句。但是,在不知道密码的情况下,通过SQL注入也是可以将其查出来。只需要将password = ‘2’or’1’;

在这里插入图片描述
感兴趣的可以去数据库试试,不过通过浏览器就不管用了,因为他们做了拦截。
5.SQL 注入的例子
web 安全一大原则:永远不要相信用户的任何输入。对输入参数做好检查(类型和范围);过滤和转义特殊字符,不要直接拼接sql,使用ORM可以大大降低 sql 注入风险。数据库层:做好权限管理配置;不要明文存储敏感信息。ORM 有安全性考虑,通过传参的形式不会有 sql 注入问题,所以提倡使用而不是自己直接拼 sql

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值