SQL注入-1

SQL注入攻击通过构建特殊的输入作为参数传入web应用程序,而这些输入大都是SQL语法里面的一些组合,通过执行SQL语句进而执行攻击者所要的操作。

SQL注入攻击是通过将恶意的SQL查询或者添加语句插入到应用的输入参数中,再在后台SQL服务器上解析执行进行的攻击。

LAMP

LAMP是指一组通常一起使用来运行动态网站或者服务器的自由软件名称首字母缩写:

  1. linux,操作系统
  2. apache,网络服务器
  3. mysql,数据管理系统
  4. python,php,脚本语言

“LAMP包"的脚本组件中包括了CGlweb接口,这个技术允许网页浏览器的用户在服务器上执行一个程序,并且和接受静态的内容一样接受动态的内容。程序员使用脚本语言来创建这些程序因为它们能很容易有效的操作文本流,甚至当这些文本流并非源自程序自身时也是。

 

在软件体系架构设计中,分层式结构是最常见的,区分层次的目的是为了“高内聚低耦合”的思想。由数据库驱动的web应用程序依从三层架构(3-tier architecture)的思想也分为了三层:

  1. 表示层
  2. 业务逻辑层(领域层)
  3. 数据访问层(存储层)

访问一个网站主页的过程为:

  1. 在web浏览器中输入网址连接到服务器
  2. 业务逻辑层的web服务器从本地存储中加载index.php脚本并解析
  3. 脚本连接位于数据访问层的DBMS(数据库管理系统),并执行SQL语句
  4. 数据访问层的数据库管理系统返回SQL语句执行结果给WEB服务器
  5. 业务逻辑层的WEB服务器将web页面封装成HTML格式发送给表示层的WEB浏览器
  6. 表示层的web浏览器解析HTML文件,将内容展示给用户

在三层架构中,所有通信都必须要经过中间层,简单说,三层架构是一种线性关系。

当访问动态网页时,web服务器会向数据访问层发起SQL查询请求,如果权限验证通过就会执行SQL语句,而这个SQL语句很多时候是需要结合用户的输入数据动态构造SQL语句,如果用户输入的数据被构造成恶意SQL代码,就会带来危险。

对于SQL注入的判断,主要有两个方面:

  1. 判断该带参数的URL是否存在SQL注入?
  2. 如果存在SQL注入,那么属于哪种SQL注入?

可能存在 SQL 注入攻击的 ASP/PHP/JSP 动态网页中,一个动态网页中可能只有一个参数,有时可能有多个参数。有时是整型参数,有时是字符串型参数,不能一概而论。总之只要是带有参数的动态网页且此网页访问了数据库,那么就有可能存在 SQL 注入。如果程序员没有足够的安全意识,没有进行必要的字符过滤,存在 SQL 注入的可能性就非常大。

通常SQL注入漏洞分为两种类型:

  1. 数字型
  2. 字符型

其实所有的类型都是根据数据库本身表的类型所产生的,在我们创建表的时候会发现其后总有个数据类型的限制,而不同的数据库又有不同的数据类型,但是无论怎么分常用的查询数据类型总是以数字与字符来区分的,所以就会产生注入点为何种类型。

SQL注入常用技术手段还包括:

  • 采用非主流通道技术
  • 避开输入过滤技术
  • 使用特殊的字符
  • 强制产生错误
  • 使用条件语句
  • 利用存储过程
  • 推断技术
  • 等等

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值