sql注入漏洞

SQL注入漏洞

严正声明:本文仅限于技术讨论,严禁用于其他用途。

一、SQL注入原理

  • 数据交互中,前端的数据传入到后台处理时,没有做严格的判断,导致其传入的“数据”拼接到SQL语句中后,被当作SQL语句的一部分执行。 从而导致数据库受损(被脱裤、被删除、甚至整个服务器权限沦陷)。简而言之就是,由于用户不可控输入,攻击者可以任意的输入恶意的sql语句,使原始的查询语句的语义发生改 变。从而对数据库或操作系统产生风险。

    SQL注入原理

    SQL注入原理

  • 注意:注入攻击的本质,就是把用户输入的数据当做代码执行。

  • 注入漏洞最根源的问题是,没有安全编码规范

实现注入攻击的两个关键条件(重点)

  • 第一个:用户能控制输入——用户能控制输入变量
  • 第二个:原本程序要执行的代码,拼接了用户输入的数据。(正是拼接的这个过程导致了代码的注入)

注入漏洞经常出现的位置

  • 常发生于用户和服务交互处(增删改查操作),ajax,接口等等

二、SQL注入危害

  • SQL注入上得了机器权限,下得了数据。攻击者利用SQL注入漏洞,带来的风险有很 多,例如数据库被拖库,管理员和重要人员信息泄露,甚至还能通过SQL注入漏洞直 接获取webshell或者服务器系统权限等等。

具体危害如下

  • 绕过登录验证:使用万能密码登录网站后台等
  • 获取敏感数据:获取网站管理员帐号、密码等
  • 文件系统操作:列目录,读取、写入文件等
  • 注册表操作:读取、写入、删除注册表等
  • 执行系统命令:远程执行命令

三、SQL注入防御

  • 对传进SQL语句里面的变量进行过滤,不允许危险字符传入;
  • 预编译参数化查询 (提前编译SQL语句,将所有的用户输入都当做『数据』,而非『语法』)在设计与数据库连接并访问数据时,在需要填入数值或数据的地方,使用参数(Parameter)来给值
  • 目前有很多ORM框架会自动使用参数化解决注入问题,但其也提供了"拼接"的方式,所以使用时需要慎重!
  • 采用黑名单、白名单等形式对用户提交的信息进行过滤,一旦发现用户参数中出现敏感的词或者内容,则将其删除,使得执行失败。
  • 安全设计遵循“数据与代码分离”原则
  • 使用WAF(web应用防护墙)等安全产品

注:最好的防御,就是内部先发现 。

如何发现被SQL注入攻击?

日志监控—>蜜罐数据—>异常报警

  • 监测方面目前大多都是:日志监控+waf。日志推荐走数据库日志,越是离资源操作 近的地方,越是容易做到真正的安全。数据库日志容易解析,语法出错的、语法读 Info表的,都明确是黑客嘛,还能帮我们发现SQL注入点。
  • 蜜罐方面:数据库里可放置一些蜜罐数据的帐号和密码。假如这有一个服务,可以先从日志入手,发现请求恶意异常时,自动转发蜜罐。比如用户表里,前几十行里,做些用户名和密码 进行,实际上没有人用,一旦被登录
  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值