`
jayghost
  • 浏览: 440133 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

【转】sql注入式攻击的原理及实例分析

    博客分类:
  • SQL
 
阅读更多
转自:http://www.oecp.cn/hi/right_way/blog/2273

什么是sql注入呢?
        所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击.

        当应用程序使用输入内容来构造动态sql语句以访问数据库时,会发生sql注入攻击。如果代码使用存储过程,而这些存储过程作为包含未筛选的用户输入的字符串来传递,也会发生sql注入。

SQL注入攻击的简单示例:
          statement := "SELECT * FROM Users WHERE Value= " + a_variable + "
        上面这条语句是很普通的一条SQL语句,他主要实现的功能就是让用户输入一个员工编号然后查询处这个员工的信息。但是若这条语句被不法攻击者改装过后,就可能成为破坏数据的黑手。如攻击者在输入变量的时候,输入以下内容SA001’;drop table c_order--。那么以上这条SQL语句在执行的时候就变为了SELECT * FROM Users WHERE Value= ‘SA001’;drop table c_order--。
  这条语句是什么意思呢?‘SA001’后面的分号表示一个查询的结束和另一条语句的开始。c_order后面的双连字符 指示当前行余下的部分只是一个注释,应该忽略。如果修改后的代码语法正确,则服务器将执行该代码。系统在处理这条语句时,将首先执行查询语句,查到用户编号为SA001 的用户信息。然后,数据将删除表C_ORDER(如果没有其他主键等相关约束,则删除操作就会成功)。只要注入的SQL代码语法正确,便无法采用编程方式来检测篡改。因此,必须验证所有用户输入,并仔细检查在您所用的服务器中执行构造 SQL命令的代码。

SQL注入攻击原理。

  可见SQL注入攻击的危害性很大。在讲解其防止办法之前,数据库管理员有必要先了解一下其攻击的原理。这有利于管理员采取有针对性的防治措施。

  SQL注入是目前比较常见的针对数据库的一种攻击方式。在这种攻击方式中,攻击者会将一些恶意代码插入到字符串中。然后会通过各种手段将该字符串传递到SQLServer数据库的实例中进行分析和执行。只要这个恶意代码符合SQL语句的规则,则在代码编译与执行的时候,就不会被系统所发现。

  SQL注入式攻击的主要形式有两种。一是直接将代码插入到与SQL命令串联在一起并使得其以执行的用户输入变量。上面笔者举的例子就是采用了这种方法。由于其直接与SQL语句捆绑,故也被称为直接注入式攻击法。二是一种间接的攻击方法,它将恶意代码注入要在表中存储或者作为原书据存储的字符串。在存储的字符串中会连接到一个动态的SQL命令中,以执行一些恶意的SQL代码。

  注入过程的工作方式是提前终止文本字符串,然后追加一个新的命令。如以直接注入式攻击为例。就是在用户输入变量的时候,先用一个分号结束当前的语句。然后再插入一个恶意SQL语句即可。由于插入的命令可能在执行前追加其他字符串,因此攻击者常常用注释标记“—”来终止注入的字符串。执行时,系统会认为此后语句位注释,故后续的文本将被忽略,不背编译与执行。
分享到:
评论

相关推荐

    ASP中SQL注入式攻击的防范探析pdf

    本文深入探讨了基于Web技术的应用软件ASP(Active Server Pages)中SQL语句容易遭受的SQL注入式攻击的具体表现形式,通过实例展示了攻击方式及其工作原理,并提出了详细的解决方案和防范措施。这有助于增强使用ASP+...

    从SQL注入到服务器沦陷全过程剖析.pdf

    SQL注入式攻击的原理在于程序未能对用户提交的变量进行有效的过滤,使得恶意用户可以构造并插入一段数据库查询代码,根据程序的返回结果,非法获取数据库中的某些数据。这种攻击可以发生在任何使用SQL数据库的动态...

    sql盲注.pdf

    - **脚本注入式攻击**:指的是恶意用户通过向应用程序发送包含恶意SQL命令的数据,这些数据通常会被应用程序当作正常的输入处理,并最终被拼接到SQL查询语句中执行。 - **恶意用户输入**:恶意用户会尝试通过输入...

    asp+sql组建动态网站实例

    8. **安全性考虑**:防止SQL注入攻击,对用户输入的数据进行验证和清理。同时,确保数据库连接信息的安全,避免在源代码中明文暴露。 9. **性能优化**:学习如何优化SQL查询,减少数据库访问次数,使用存储过程提升...

    网站防注入攻略,仅为一人收集整理,愿大家分享技术.pdf

    - **防范Sql注入式攻击**:提供一系列实用的防护策略。 - **PHP与SQL注入攻击**:针对PHP语言的特点,介绍如何避免SQL注入风险。 - **终极防范SQL注入漏洞**:总结最有效的防护方法和技术。 #### 七、总结 通过对...

    121-URL注入攻击.pdf

    URL注入攻击是一种常见的Web安全漏洞,与跨站脚本(XSS)、SQL注入等攻击方式类似,其核心在于攻击者能够控制或修改URL中的参数,进而对目标系统进行非法操作。这种攻击方式之所以存在风险,是因为许多Web应用在处理...

    插入式注入方法技巧

    本文将深入探讨一种特定的SQL注入技术——插入式注入方法,并通过实例解析其操作流程与技巧。 #### 一、插入式注入的基本原理 插入式注入,顾名思义,是在正常的URL参数中插入额外的SQL代码片段,以改变原有查询...

    ASP+SQL教材大全

    6. **安全性与优化**:学习防止SQL注入攻击的策略,理解预编译语句和参数化查询的作用。同时,也会探讨如何优化SQL查询,提高数据库性能。 7. **错误处理与调试**:了解ASP的错误处理机制,学习如何设置On Error...

    ASP与SQL Server网站架设

    9. **安全性**:学习关于SQL注入攻击的基本知识,以及如何通过参数化查询等方法防止此类攻击。 10. **部署和维护**:了解如何将ASP网站部署到生产环境,以及基本的网站维护技巧。 通过这些建立在实例基础上的学习...

    ASP实例开发源码—凹丫丫 asp 新闻发布系统 v4.9 (access、SQL ).zip

    在实际应用中,需要考虑SQL注入、跨站脚本攻击等问题,需要对用户输入进行验证和清理。同时,为了提高系统性能,可能需要对数据库查询进行优化,如使用存储过程,合理设计索引等。 7. 使用须知: "使用须知.txt...

    基于ASP的ASP+SQL版网上团购系统.zip

    6. **安全机制**:确保用户数据的安全,如使用HTTPS加密传输,防止SQL注入等攻击。 在实际开发中,ASP+SQL系统可能还会涉及到缓存管理、邮件通知、数据分析等高级功能。通过合理的架构设计和优化,这样的系统可以...

    ASP+SQL人才网站的设计与实现毕业设计及论文(论文+源代码).zip

    2. **安全性**:在ASP和SQL的集成应用中,防止SQL注入攻击是至关重要的。开发者需要使用参数化查询或存储过程来避免恶意输入影响数据库。同时,密码应加密存储,以保护用户隐私。 3. **用户认证与授权**:ASP可以...

    Web应用中的ldap相关问题

    #### LDAP注入式攻击原理 LDAP注入攻击类似于SQL注入攻击,其核心在于利用未经适当处理或验证的用户输入来构造恶意的LDAP查询语句,从而获取未授权的信息或执行非法操作。攻击者通常会在用户提交的数据中嵌入特殊...

    基于ASP的二月小说 ASP源码 v1.012 SQL版.zip

    ASP源码需要防止SQL注入、跨站脚本攻击(XSS)等安全风险,同时通过优化数据库查询、减少服务器响应时间、缓存策略等方式提升系统性能。 【学习与开发】 对于初学者,分析和学习这样的源码可以帮助理解ASP的工作机制...

    ASP.NET《数据库原理及应用技术》课程指导平台的开发(源代码+论文).rar

    同时,还需要防止SQL注入和跨站脚本攻击等安全威胁。 6. **性能优化**:在大量用户并发访问时,平台可能采用了缓存技术(如ASP.NET的Output Cache)来减少数据库压力,或者利用AJAX进行局部刷新,提高用户体验。 7...

    基于JSP+SqlServer实现的即时通讯工具(系统+论文).zip

    【安全性】:项目可能考虑了基本的安全措施,如密码加密存储、防止SQL注入攻击以及使用HTTPS协议保证通信安全。 【性能优化】:即时通讯工具需要处理大量的并发连接和实时数据传输,因此可能采用了缓存机制、异步...

    机票预定系统(需求分析及概要设计)软件设计说明书实例

    《机票预定系统(需求分析及概要设计)软件设计说明书实例》 在信息化时代,一个高效、便捷的机票预定系统是航空公司与旅客之间的重要桥梁。本文将深入探讨该系统的两个关键阶段:需求分析和概要设计,以揭示其背后的...

    spring jdbc 实例源码

    `)进行参数绑定,以防止SQL注入攻击。在`epet`项目中,我们可能会看到`JdbcTemplate`的方法如`update(String sql, Object... args)`和`query(String sql, RowMapper<T> rowMapper, Object... args)`,它们分别用于...

Global site tag (gtag.js) - Google Analytics