SQL注入原理

概述


SQL注入: 应用程序在向后台数据库传递SQL( Structured Query Language , 结构化查询语言 )查询时,如果攻击者提供了影响该查询的能力,就会引发SQL注入。SQL注入不只是一种会影响Web应用的漏洞,对于任何从不可信源获取输入的代码来说,如果使用输入来构造动态SQL语句,就有可能也会受到攻击。


Web应用原理

Web应用它们都具有交互性并且多半是数据库驱动的。

数据库驱动的Web应用通常包含三层:表示层( Web浏览器或呈现引擎)、逻辑层( 如C#、ASP、.NET、PHP、JSP等编程语言 ) 和存储层( 如Microft SQL Server、MySql、Oracle等数据库)。
Web浏览器( 表示层 )向中间层( 逻辑层 )发送请求,中间层通过查询、更新数据库( 存储层 ) 响应该请求。

数据库驱动的的Web应用的三层架构:
在这里插入图片描述

复杂架构

三层架构不具扩展性,所以对三层架构就行改进。n层应用程序开发范式。其中包括一种4层解决方法,该方案在Web服务器和数据库之间使用了一层中间件 ( 通常称为应用服务器 )。n层架构中的应用服务器负责将API ( 应用编程接口 )提供给业务逻辑和业务流程以供程序使用。可以根据需要引入其他的Web服务器。此外应用服务器可以与多个数据源通信,包括数据库、大型机以及其他旧式系统。

四层架构
在这里插入图片描述

Web浏览器( 表示层 )向中间层( 逻辑层 )发送请求,后者依次调用由位于应用层的应用服务器提供的API,应用层通过查询、更新数据库( 存储层 )来响应该请求。


理解SQL注入

SQL注入是一种将SQL代码插入或添加到应用( 用户 )的输入参数中的攻击,之后再将这些参数传递给后台的SQL服务器加以解析并执行。

构造动态字符串是一种编程技术,它允许开发人员在运行过程中动态构造SQL语句。
参数化查询是指SQL语句中包含一个或多个嵌入参数的查询。可以在运行过程中将参数传递给这些查询。包含的嵌入到用户输入中的参数不会被解析成命令而执行,而且代码不存在被注入的机会。

SQL数据库将单引号字符 ( ’ ) 解析成代码与数据间的分割线。单引号外边的内容均是需要运行的代码,而用单引号引起来的内容均是数据。

在进行攻击和防御时,了解各种数据库的特性是非常必要的。特别是各种数据库中的转译字符。

SQL注入的产生过程

1. 转义字符处理不当
2. 类型处理不当
3. 查询语句处理不当
4. 错误处理不当
5. 多个提交处理不当
6. 不安全数据库配置

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值