SQL 安全性: 新型 SQL 截断攻击和防御方法
2009-02-10 10:23:52 来源:WEB开发网核心提示:本文讨论: 分隔标识符和字符串 实用的 T-SQL 函数 截断和修改攻击 找出 Bug 和漏洞 本文使用了以下技术:SQL Server 目录 分隔标识符和字符串T-SQL 函数SQL 注入漏洞通过截断进行修改通过截断进行 SQL 注入通过截断检测注入利用 SQL 注入方法的漏洞攻击已经引起了广泛关注,因为这些漏洞能够
本文讨论:
分隔标识符和字符串
实用的 T-SQL 函数
截断和修改攻击
找出 Bug 和漏洞
本文使用了以下技术:
SQL Server
目录
分隔标识符和字符串
T-SQL 函数
SQL 注入漏洞
通过截断进行修改
通过截断进行 SQL 注入
通过截断检测注入
利用 SQL 注入方法的漏洞攻击已经引起了广泛关注,因为这些漏洞能够穿过防火墙和入侵检测系统,从而破坏您的数据层。无论是第一级还是第二级注入攻击,如果您看一下基本的代码模式,它与其他任何注入攻击问题都类似,即您在构造语句时都使用了不受信任的数据。大多数开发人员已经开始通过在后端使用参数化 SQL 查询和存储过程来减少 Web 前端的这些漏洞,但有些情况下,开发人员仍使用动态构建的 SQL,例如根据用户输入或为 C/C++ 编写的应用程序构造数据定义语言 (DDL) 语句时。
在本文中我将讨论一些新观点,其结果可能会修改 SQL 语句或注入 SQL 代码,即使代码对分隔字符进行了转义。我首先介绍一些构建分隔标识符和 SQL 字符串的最佳实践,然后我将介绍攻击者注入 SQL 代码的几种新方法,以帮助您保护您的应用程序。
分隔标识符和字符串
在 SQL Server™ 中,有两种字符串变量:唯一可识别 SQL 对象(如表、视图和存储过程)的 SQL 标识符,以及用于表示数据的字符串。分隔 SQL 标识符的方法与分隔数据字符串的方法不同。我们将讨论需要使用这些数据变量的动态 SQL 构建方法的最佳实践。
如果 SQL 对象名使用了关键字,或者对象名中包含了特殊字符,则您需要使用分隔标识符。假如您需要删除 my_dbreader 登录名,则可以执行以下语句:
- ››SQL Server 2008 R2 下如何清理数据库日志文件
- ››sqlite 存取中文的解决方法
- ››SQL2005、2008、2000 清空删除日志
- ››SQL Server 2005和SQL Server 2000数据的相互导入...
- ››sql server 2008 在安装了活动目录以后无法启动服...
- ››sqlserver 每30分自动生成一次
- ››sqlite 数据库 对 BOOL型 数据的插入处理正确用法...
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
更多精彩
赞助商链接