`

SQL注入 简要

阅读更多

    SQL注入 是一种代码注入 技术,它利用一个安全漏洞 的发生在数据库 层的应用 该漏洞存在当用户输入错误地过滤,要么是字符串 转义字符 在嵌入式的SQL 语句或用户输入不强类型 ,从而意外地执行。 它是一类更一般的漏洞可能出现的每当一个编程或脚本语言嵌入在另一个实例。   SQL注入攻击也被称为SQL注入攻击。

 

 

不正确的转义字符过滤

  这对SQL注入的形式出现时,用户输入不过滤, 转义字符 ,然后被传递到一个的SQL 语句。 在关于由应用程序的最终用户数据库进行操作的语句可能这样的结果。

下面的代码行说明这个漏洞:

statement = "SELECT * FROM users WHERE name = '" + userName + "';"
 

此SQL代码的目的是拉动其用户从表中指定用户名的记录。 . 但是,如果“用户名”变量是在一个特定的方式制作一个恶意用户,SQL语句可能做多的代码作者的意图。 例如,设置了“ 用户名 ”变量

' or '1'='1

 

或使用注释,甚至阻止其他查询:

' or '1'='1';/*'

 

使这一由家长语言SQL语句:

SELECT * FROM users WHERE name = '' OR '1'='1';

 

 

如果此代码是要在一个认证过程中使用那么这个例子可以用来强制一个有效的用户名的选择,因为'1'= '1'的评价永远是正确的。该语句下面的值的“用户名”在下面将导致表删除“用户”,以及userinfo的表选择“所有数据从”(在本质上揭示了每个用户信息),使用的API 的允许多条语句:

a';DROP TABLE users; SELECT * FROM userinfo WHERE 't' = 't

 

这种投入呈现最终的SQL语句如下:

SELECT * FROM users WHERE name = 'a';DROP TABLE users; SELECT * FROM userinfo WHERE 't' = 't';

 

 

虽然大多数的SQL服务器实现允许将多个语句执行的方式与这一个来电,API,例如一些SQL 的PHPmysql_query() 不允许因为安全的原因。 这可以防止攻击者注入完全独立的查询,但并不能阻止修改查询它们。

 

======================================================

 

错误类型的处理

这种形式的SQL注入时,会出现用户提供的字段不强类型的 ,或不检查类型 的限制。 这可能发生在一个数字字段是在SQL语句中使用,但程序员不作任何检查,以验证用户提供的输入是数字。  例如:

statement := "SELECT * FROM userinfo WHERE id = " + a_variable + ";"

 

 

正是从这一声明清楚,作者的意图a_variable是数字,关联到的“ID”字段。 但是,如果它其实是一个字符串 ,那么最终用户 可以操纵的发言,因为他们选择,从而绕过需要的字符转义。 例如,要设置a_variable

1;DROP TABLE users

 

将下 drop (delete)从数据库中的“用户”表,因为SQL将呈现如下:

SELECT * FROM userinfo WHERE id=1;DROP TABLE users;

 

==============================

 

在数据库服务器中的漏洞

有时,漏洞可以存在于数据库服务器软件本身,因为是与案件的MySQL 服务器的mysql_real_escape_string() 函数[2] 。 . 这将允许攻击者执行SQL注入攻击成功的Unicode字符的坏,即使用户的输入被逃脱。 这个问题已经打上了版本5.0.22发布(05月06日24日发布)。

 

 

盲SQL注入

盲SQL注入是一个Web应用程序时使用很容易受到SQL注入,但注入的结果是不可见的攻击者。 与此漏洞的网页可能是一个不显示数据,但会显示不同的逻辑语句进入合法的SQL语句注入的页面调用的结果而定。 这种类型的攻击可以成为时间密集,因为一个新的语句必须为每个位制作的恢复。 有几个工具,可以自动建立这些攻击一旦该位置的漏洞和目标信息。

 

 

有条件的回应

一个盲目的SQL注入式强制数据库,以评估对一个普通的应用程序屏幕上的一个逻辑语句。

SELECT booktitle FROM booklist WHERE bookId = 'OOk14cd' AND 1=1;

 

会导致正常的页面,而  

SELECT booktitle FROM booklist WHERE bookId = 'OOk14cd' AND 1=2;

 

可能会给出不同的结果如果页面很容易受到SQL注入。 这就像一个注入攻击者可能会建议一个盲目SQL注入是可能的,攻击者留下的语句,制定评估为真或假表列或不同的内容之外的另一个SELECT语句的列列表。

 

=================================

 

有条件的错误

这种盲目的SQL注入式的原因,迫使数据库,以评估一份声明中导致错误,如果WHERE语句为真一个SQL错误。 例如,

SELECT 1/0 FROM users WHERE username='Ralph';
 

由零司将只进行评估,并导致错误,如果用户“Ralph”存在。

 

 

时间延迟

时滞是一种盲目的SQL注入类型,导致SQL引擎执行一个长时间运行的查询或延时语句的逻辑依赖注入。 攻击者就可以测量时间的页面需要加载,以确定是否注入的说法是正确的。

 

=============

 

防止SQL注入

为了防止SQL注入,用户输入不能直接嵌入SQL语句。 相反,必须使用参数化语句(首选)或用户输入必须仔细逃跑或过滤。

 

 

参数化语句

对于大多数开发平台,采用参数化语句可以带参数的工作,而不是嵌入在语句的用户输入(有时称为占位符或绑定变量)。 . 在许多情况下,SQL语句是固定的,每个参数是一个标量,而不是一个表。 用户输入,然后分配(方向)的参数。 这是一个使用Java和JDBC的 API的:

PreparedStatement prep = conn.prepareStatement("SELECT * FROM USERS WHERE USERNAME=? AND PASSWORD=?");
prep.setString(1, username);
prep.setString(2, password);
prep.executeQuery();
 
0
1
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    SQL注入项目报告(全英文)

    - 首先,报告简要介绍了SQL注入问题的重要性,以及为何需要对其深入理解和防范。 2. **SQL注入原理与方法**: - SQL注入的基础在于应用程序未能正确过滤用户输入,导致恶意SQL代码能够被执行。 - **手动检测SQL...

    SQL注入工具(超级好用)

    SQL注入是一种常见的网络安全漏洞,它发生在应用程序在构建数据库查询时,未正确过滤或验证用户输入,使得攻击者可以通过构造特定的SQL语句来控制或获取数据库中的敏感信息。本话题聚焦于一个名为“超级好用”的SQL...

    二阶SQL注入防御技术研究.pdf

    首先,本文简要介绍了当前Web应用程序的安全风险,特别是SQL注入漏洞的严重性。随着Web2.0时代的到来,大量基于B/S架构的应用程序在各个企业的业务系统中得到了广泛的应用。在应用开发过程中,如果开发者缺乏相应的...

    SQL注入漏洞演示源代码

    SQL注入漏洞是网络安全领域中的一个重要话题,它涉及到数据库管理和Web应用程序的安全性。在这个"SQL注入漏洞演示源代码"中,我们可以深入理解这种攻击方式的工作原理,并学习如何防止它。 SQL注入是通过在输入数据...

    基于静态分析的Java源代码SQL注入检测算法.pdf

    最后,文章简要叙述了文章的组织结构,包括引言、相关研究工作、提出的SQL注入检测算法原理、算法实现、算法测试与评价,以及总结和展望。 总结来说,这篇文章详细地讲解了SQL注入攻击的危害、检测和预防的原理,...

    用于SQL注入检测的语句块摘要树模型.pdf

    SQL注入的原理可以简要说明如下:攻击者在Web应用系统中输入恶意构造的SQL语句片段,当这些输入被后端数据库执行时,就能够绕过正常的查询逻辑,执行攻击者设计的恶意查询或命令。例如,一个登录功能的表单,本意是...

    SQL注入对医院网站的危害及防范措施.pdf

    文章的最后部分还简要介绍了OS/2、POSIX、LSA等术语,这些术语虽与主题关联不大,但有助于读者了解SQL注入攻击发生的技术环境,增强对整体网络安全的认识。 总的来说,文章通过对SQL注入原理的剖析,对医院网站的...

    防范SQL注入的应用分析

    Web服务器脚本攻击事件的增多反映出各种Web服务器漏洞的非...文章简要介绍了SQL注入攻击的概念和原理,以及SQL注入攻击的特点和实现过程,并在此基础上叙述了如何检测SQL注入攻击,总结了一般的SQL注入攻击的防范方法。

    关于sql注入的简要演示(入坑抛砖)

    SQL注入是一种常见的网络安全漏洞,它发生在应用程序未能正确过滤或验证用户输入的数据时,允许攻击者插入恶意的SQL语句到应用程序的查询中。本文将通过一个简单的示例来解释SQL注入的工作原理和演示如何利用它。 ...

    基于爬虫的SQL注入自动化检测系统设计.pdf

    SQL注入(SQL Injection)是一种常见的网络攻击方法,攻击者通过在Web应用的SQL命令中插入恶意SQL代码片段,利用应用程序中的安全漏洞,从而实现对数据库的非法访问和操作。这种攻击的危害极大,可以获取敏感数据、...

    关于SQL注入中文件读写的方法总结

    本文主要探讨了在SQL注入攻击中如何进行文件的读写操作。SQL注入是一种常见的网络安全攻击技术,攻击者通过向数据库注入恶意SQL代码,从而控制数据库服务器。在这一过程中,攻击者不仅能够读取数据库中的数据,还能...

    在有注入漏洞的SQL服务器上运行CMD命令

    本文主要介绍如何在存在SQL注入漏洞的环境中利用特定技术执行操作系统级别的命令。这种技术通常被安全研究人员用于渗透测试场景,帮助评估网络环境的安全性。文章首先简要介绍了传统方法——即使用`xp_cmdshell`扩展...

    C#操作access,sql2000数据库简要资料

    - 遵循安全编码原则,使用参数化查询避免SQL注入攻击。 - 使用连接池提高性能,减少频繁打开和关闭连接的开销。 - 对于长运行的数据库操作,使用异步方法以避免阻塞UI线程。 - 适当地使用事务确保数据一致性,尤其是...

    四元 測試sql 測試sql

    SQL注入是常见的数据库攻击方式之一,通过对SQL查询进行安全性测试,可以有效防止此类攻击的发生,保护系统安全。 ### SQL测试方法 #### 1. 单元测试 针对每一个独立的SQL查询语句进行测试,确保其功能正确。 ###...

    mysql注入绕过技术

    在网络安全领域,SQL注入是一种常见的攻击手段,攻击者通过在应用程序中插入恶意SQL代码来控制数据库。针对这种威胁,许多开发者实施了过滤机制来防御潜在的SQL注入攻击。然而,正如Johannes Dahse在其2010年布拉格...

    经典的ASP防注入,我已经经过测试了

    在本文中,我们将深入探讨一个经典的ASP(Active Server Pages)防止SQL注入的方法,并对其进行了详细的测试验证。 #### 描述:经典的ASP防注入,我已经经过测试了,非常经典,大家看一下,如有问题联系我,谢谢 该描述...

Global site tag (gtag.js) - Google Analytics