设为首页 - 加入收藏 温岭网 (http://www.themebuff.com)- 致力于打造温岭最大的资讯信息平台!
热搜: 美国 日媒 平台 系统
当前位置: 主页 > 建站 > 正文

凯旋门娱乐手机版

发布时间:2019-02-24 14:09 所属栏目:[建站] 来源:佚名
导读:我们之前预想的SQL 语句是: SELECT*FROMuserWHEREusername=''ANDpsw='password' 但是恶意攻击者用奇怪用户名将你的 SQL 语句变成了如下形式: SELECT*FROMuserWHEREusername=''--'ANDpsw='xxxx' 在 SQL

我们之前预想的SQL 语句是:

  1. SELECT * FROM user WHERE username='' AND psw='password' 

但是恶意攻击者用奇怪用户名将你的 SQL 语句变成了如下形式:

  1. SELECT * FROM user WHERE username='' --' AND psw='xxxx' 

在 SQL 中,' --是闭合和注释的意思,-- 是注释后面的内容的意思,所以查询语句就变成了:

  1. SELECT * FROM user WHERE username='' 

所谓的万能密码,本质上就是SQL注入的一种利用方式。

一次SQL注入的过程包括以下几个过程:

  • 获取用户请求参数
  • 拼接到代码当中
  • SQL语句按照我们构造参数的语义执行成功

**SQL注入的必备条件:
1.可以控制输入的数据
2.服务器要执行的代码拼接了控制的数据**。

常见六大Web安全攻防解析


常见六大Web安全攻防解析
我们会发现SQL注入流程中与正常请求服务器类似,只是黑客控制了数据,构造了SQL查询,而正常的请求不会SQL查询这一步,SQL注入的本质:数据和代码未分离,即数据当做了代码来执行。

2.危害

  • 获取数据库信息

    • 管理员后台用户名和密码
    • 获取其他数据库敏感信息:用户名、密码、手机号码、身份证、银行卡信息……
    • 整个数据库:脱裤
  • 获取服务器权限
  • 植入Webshell,获取服务器后门
  • 读取服务器敏感文件

3.如何防御

  • 严格限制Web应用的数据库的操作权限,给此用户提供仅仅能够满足其工作的最低权限,从而最大限度的减少注入攻击对数据库的危害
  • 后端代码检查输入的数据是否符合预期,严格限制变量的类型,例如使用正则表达式进行一些匹配处理。
  • 对进入数据库的特殊字符(',",,<,>,&,*,; 等)进行转义处理,或编码转换。基本上所有的后端语言都有对字符串进行转义处理的方法,比如 lodash 的 lodash._escapehtmlchar 库。
  • 所有的查询语句建议使用数据库提供的参数化查询接口,参数化的语句使用参数而不是将用户输入变量嵌入到 SQL 语句中,即不要直接拼接 SQL 语句。例如 Node.js 中的 mysqljs 库的 query 方法中的 ? 占位参数。

六、OS命令注入攻击

OS命令注入和SQL注入差不多,只不过SQL注入是针对数据库的,而OS命令注入是针对操作系统的。OS命令注入攻击指通过Web应用,执行非法的操作系统命令达到攻击的目的。只要在能调用Shell函数的地方就有存在被攻击的风险。倘若调用Shell时存在疏漏,就可以执行插入的非法命令。

命令注入攻击可以向Shell发送命令,让Windows或Linux操作系统的命令行启动程序。也就是说,通过命令注入攻击可执行操作系统上安装着的各种程序。

1.原理

常见六大Web安全攻防解析

常见六大Web安全攻防解析
黑客构造命令提交给web应用程序,web应用程序提取黑客构造的命令,拼接到被执行的命令中,因黑客注入的命令打破了原有命令结构,导致web应用执行了额外的命令,最后web应用程序将执行的结果输出到响应页面中。

我们通过一个例子来说明其原理,假如需要实现一个需求:用户提交一些内容到服务器,然后在服务器执行一些系统命令去返回一个结果给用户

  1. // 以 Node.js 为例,假如在接口中需要从 github 下载用户指定的 repo 
  2. const exec = require('mz/child_process').exec; 
  3. let params = {/* 用户输入的参数 *

    【免责声明】本站内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:[email protected],我们将及时予以处理。

网友评论
推荐文章