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 参数检查,特殊字符进行处理(转义)
分享到:
相关推荐
在Web开发中,预防SQL注入的常用方法包括使用PreparedStatement、使用存储过程、对所有输入进行验证,以及使用ORM框架等。通过这些技术手段,可以有效地阻止恶意用户通过SQL注入攻击的方式,获取敏感数据或破坏...
SQL注入攻击的原理包括利用Web应用程序对用户输入处理不当,如未对输入进行充分的验证、过滤或转义,从而将恶意SQL代码注入数据库查询中。攻击步骤通常包括对网站或应用的输入点进行探测,然后通过输入特定构造的SQL...
通过理解其原理,采取有效的预防措施,以及定期评估和更新防护策略,可以大大降低SQL注入攻击的风险。对于初学者和专业开发者来说,深入研究SQL注入的各个方面,包括入门、进阶和高级技巧,是提升系统安全性的关键...
* SQL注入漏洞的原理是从客户端提交特殊的代码,从而收集程序及服务器的信息,从而获取攻击者想得到的资料。 二、 SQL注入漏洞的危害 * SQL注入漏洞可能导致敏感数据泄露、服务器被入侵、网站沦陷等严重后果。 * ...
### SQL注入攻击实验报告知识点详解 #### 一、实验背景及目的 - **实验背景**:随着互联网技术的发展,Web应用程序越来越广泛地...在实际开发过程中,必须高度重视安全性问题,采取多种措施来预防和抵御SQL注入攻击。
二、SQL注入原理 1. 一阶SQL注入 一阶SQL注入是指攻击者通过一次HTTP请求即可向数据库中注入恶意SQL代码,以实现非法访问或对数据库进行非授权修改。攻击过程即刻执行,对系统的危害是即时和严重的。 2. 二阶SQL...
在这个"SQL注入漏洞演示源代码"中,我们可以深入理解这种攻击方式的工作原理,并学习如何防止它。 SQL注入是通过输入恶意的SQL语句来操纵或破坏数据库的一种手段。攻击者通常在Web表单中输入特殊字符序列,使得应用...
SQL注入攻击是网络安全领域中一个严重的问题,它发生在应用程序未能充分验证或清理用户输入的数据时。...在开发过程中,始终遵循安全编码的最佳实践,确保用户输入的安全性,是预防SQL注入的关键。
#### 一、SQL注入简介 SQL注入是一种常见的网络安全攻击方式,攻击者通过在Web应用程序的输入字段中插入恶意SQL语句来操纵后端数据库的行为。这种攻击通常利用了Web应用对用户输入数据的不充分过滤和验证。万能密码...
这个"PHP+Mysql 带SQL注入源码 下载"的主题涉及到一个常见的安全问题——SQL注入,以及如何处理和预防这种情况。下面将详细讨论SQL注入、PHP与MySQL的结合使用,以及如何防范SQL注入。 **SQL注入** SQL注入是一种...
### SQL注入原理详解 #### 一、SQL注入概念与危害 **SQL注入**是一种常见的网络安全攻击方式,通过将恶意的SQL代码嵌入到应用程序接收的输入数据中,从而欺骗服务器执行非预期的数据库操作。这种攻击能够导致敏感...
"sql注入法攻击.sql注入法攻击.rar"这个文件很可能是关于如何预防和应对SQL注入攻击的教学资料。 在了解SQL注入攻击之前,我们首先要明白SQL(Structured Query Language)是用于管理和处理关系数据库的标准语言。...
因此,如何有效预防和减轻SQL注入攻击的影响,是网络安全领域中亟待解决的问题。 为了防范SQL注入,本书《SQL注入攻击与防御》由专注于SQL注入安全研究的专家团队编写,内容涵盖所有与SQL注入攻击相关的信息。书中...
在这个过程中,我们需要理解SQL注入的基本原理、如何预防以及如何进行有效测试。 SQL注入攻击的原理是攻击者通过输入恶意的SQL代码到应用的输入字段,以篡改原有的SQL查询,从而获取未经授权的数据访问、修改甚至...
#### 二、SQL注入原理与实践 ##### (一)SQL注入基础 SQL注入是一种利用应用程序对用户输入数据缺乏有效过滤,允许恶意用户向数据库发送非法SQL指令的安全攻击方式。攻击者可以通过提交包含SQL代码的请求,利用...