`
how_it_works
  • 浏览: 5881 次
社区版块
存档分类
最新评论

SQL注入原理及预防

阅读更多

SQL注入原理及预防

 

说明 : 以下内容以mysql为例,其他RDBMS原理一样,但数据库原生函数及SQL语法可能有差异。

一、 注入原理

 我们以登录为例,用户登录时后台会执行SQL语句如下:

select * from auth_user where user_name = '${paramter1}' and password =  '${paramter2}'

 

这时如果我们前台传入到后台的参数是以下情况时:

 ${paramter1}=admin
 
 ${paramter2}=' or true  or '

 那么后台就会执行

 select * from auth_user where user_name='admin' password =' ' or true  or ' ' ;

 

原本不能查出记录(通过验证)的情况下,通过SQL的注入达到了黑客的目的。

以上为SQL注入原理,通过SQL注入可以达到,DB的安装目录、DB管理员密码查看等等目的,所以我们在写代码时要养成良好习惯。接下来我们来讲解SQL注入的防范及原理。

一 、防范原理

select * from auth_user where user_name = '${paramter1}' and password =  '${paramter2}'

 

 

承上SQL注入例子,如果我们对${paramter} 进行相关的验证就可以达到预防的作用。

以java为例:

 String stmtSQL = "select * from auth_user where user_name = ? and password =  ?";  
         getJdbcTemplate().execute(stmtSQL,new PreparedStatementCallback(){  
             public Object doInPreparedStatement(PreparedStatement ps)  throws SQLException  
             {  
                 //${paramter1}
                     ps.setString(1, "admin");
                 //${paramter2}  
                     ps.setString(2, " ' ' or true  or ' ' ");  
                     ps.execute();  
              //test code
                 return null;  
             }  
        });  
 

这段程序的原理是将SQL语句进行参数话

"insert into auth_user(username,password) values(?,?)"

 

将其中的"?"进行参数替换

  //${paramter1}
                     ps.setString(1, "admin");
                 //${paramter2}  
                     ps.setString(2, " ' ' or true  or ' ' ");  
                     ps.execute();  

 

替换的过程一定要注意将特殊的符号进行转义,如:

' = \'
" =\"

 

如上程序,最终执行的SQL为

select * from auth_user where password =' \' or true  or \' ' ;

 

结果与我们预期一样。

三、总结

SQL的注入是数据库的基本知识点,所以防范方法已有很多,但是原理其实很简单:

1  参数话SQL语句

2 参数检查,特殊字符进行处理(转义)

3
3
分享到:
评论

相关推荐

    sql注入原理简介

    在Web开发中,预防SQL注入的常用方法包括使用PreparedStatement、使用存储过程、对所有输入进行验证,以及使用ORM框架等。通过这些技术手段,可以有效地阻止恶意用户通过SQL注入攻击的方式,获取敏感数据或破坏...

    SQL注入攻击及其预防方法研究

    SQL注入攻击的原理包括利用Web应用程序对用户输入处理不当,如未对输入进行充分的验证、过滤或转义,从而将恶意SQL代码注入数据库查询中。攻击步骤通常包括对网站或应用的输入点进行探测,然后通过输入特定构造的SQL...

    SQL注入全面讲解技术文档

    通过理解其原理,采取有效的预防措施,以及定期评估和更新防护策略,可以大大降低SQL注入攻击的风险。对于初学者和专业开发者来说,深入研究SQL注入的各个方面,包括入门、进阶和高级技巧,是提升系统安全性的关键...

    SQL注入漏洞全接触.ppt

    * SQL注入漏洞的原理是从客户端提交特殊的代码,从而收集程序及服务器的信息,从而获取攻击者想得到的资料。 二、 SQL注入漏洞的危害 * SQL注入漏洞可能导致敏感数据泄露、服务器被入侵、网站沦陷等严重后果。 * ...

    SQL注入攻击实验报告

    ### SQL注入攻击实验报告知识点详解 #### 一、实验背景及目的 - **实验背景**:随着互联网技术的发展,Web应用程序越来越广泛地...在实际开发过程中,必须高度重视安全性问题,采取多种措施来预防和抵御SQL注入攻击。

    SQL注入原理及防范方法.pdf

    二、SQL注入原理 1. 一阶SQL注入 一阶SQL注入是指攻击者通过一次HTTP请求即可向数据库中注入恶意SQL代码,以实现非法访问或对数据库进行非授权修改。攻击过程即刻执行,对系统的危害是即时和严重的。 2. 二阶SQL...

    SQL注入漏洞演示源代码

    在这个"SQL注入漏洞演示源代码"中,我们可以深入理解这种攻击方式的工作原理,并学习如何防止它。 SQL注入是通过输入恶意的SQL语句来操纵或破坏数据库的一种手段。攻击者通常在Web表单中输入特殊字符序列,使得应用...

    sql注入攻击防范解析

    SQL注入攻击是网络安全领域中一个严重的问题,它发生在应用程序未能充分验证或清理用户输入的数据时。...在开发过程中,始终遵循安全编码的最佳实践,确保用户输入的安全性,是预防SQL注入的关键。

    sql注入万能密码

    #### 一、SQL注入简介 SQL注入是一种常见的网络安全攻击方式,攻击者通过在Web应用程序的输入字段中插入恶意SQL语句来操纵后端数据库的行为。这种攻击通常利用了Web应用对用户输入数据的不充分过滤和验证。万能密码...

    PHP+Mysql 带SQL注入源码 下载

    这个"PHP+Mysql 带SQL注入源码 下载"的主题涉及到一个常见的安全问题——SQL注入,以及如何处理和预防这种情况。下面将详细讨论SQL注入、PHP与MySQL的结合使用,以及如何防范SQL注入。 **SQL注入** SQL注入是一种...

    SQL注入原理.

    ### SQL注入原理详解 #### 一、SQL注入概念与危害 **SQL注入**是一种常见的网络安全攻击方式,通过将恶意的SQL代码嵌入到应用程序接收的输入数据中,从而欺骗服务器执行非预期的数据库操作。这种攻击能够导致敏感...

    sql注入法攻击sql注入法攻击.rar

    "sql注入法攻击.sql注入法攻击.rar"这个文件很可能是关于如何预防和应对SQL注入攻击的教学资料。 在了解SQL注入攻击之前,我们首先要明白SQL(Structured Query Language)是用于管理和处理关系数据库的标准语言。...

    SQL注入攻击与防御

    因此,如何有效预防和减轻SQL注入攻击的影响,是网络安全领域中亟待解决的问题。 为了防范SQL注入,本书《SQL注入攻击与防御》由专注于SQL注入安全研究的专家团队编写,内容涵盖所有与SQL注入攻击相关的信息。书中...

    万能SQL注入程序

    在这个过程中,我们需要理解SQL注入的基本原理、如何预防以及如何进行有效测试。 SQL注入攻击的原理是攻击者通过输入恶意的SQL代码到应用的输入字段,以篡改原有的SQL查询,从而获取未经授权的数据访问、修改甚至...

    SQL注入—ASP注入漏洞全接触.pdf

    #### 二、SQL注入原理与实践 ##### (一)SQL注入基础 SQL注入是一种利用应用程序对用户输入数据缺乏有效过滤,允许恶意用户向数据库发送非法SQL指令的安全攻击方式。攻击者可以通过提交包含SQL代码的请求,利用...

Global site tag (gtag.js) - Google Analytics