`

SQL注入问题总结

 
阅读更多

一、SQL注入介绍

SQL注入就是将原本的SQL语句的逻辑结构改变,使得SQL语句的执行结果和原本开发者的意图不一样;

方法:在表单中将命令当作用户输入提交给程序;


二、SQL注入范例

这里我们根据用户登录页面

 <form action="" >
	用户名:<input type="text" name="username"><br/>
	密  码:<input type="password" name="password"><br/>
  </form>

 

预先创建一个表:

create table user_table(
	id		int	Primary key,
	username	varchar(30),
	password	varchar(30)
);

insert into user_table values(1,'xiazdong-1','12345');
insert into user_table values(2,'xiazdong-2','12345');

 

一般查询数据库的代码如下:

public class Demo01 {
	public static void main(String[] args) throws Exception {
		String username = "xiazdong";
		String password = "12345";	
		String sql = "SELECT id FROM user_table WHERE " + "username='" + username
				+ "'AND " + "password='" + password + "'";
		Class.forName("com.mysql.jdbc.Driver");
		Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/db1","root","12345");
		PreparedStatement stat = con.prepareStatement(sql);
		System.out.println(stat.toString());
		ResultSet rs = stat.executeQuery();
		while(rs.next()){
			System.out.println(rs.getString(1));
		}
	}
}

 

但是这里username=xiazdong,password=12345,

因此此处的SQL语句为:

SELECT id FROM user_table WHERE username='xiazdong' AND password='12345';

 

如果我们把username和password的值变为:username=' OR 1=1 --
password=x,会变成一个很可怕的情况:将把数据库中所有用户都列出来,为什么呢?

因为SQL语句现在为:

SELECT id FROM user_table WHERE username='' OR 1=1 -- ' AND password='12345';

 

因为--表示SQL注释,因此后面语句忽略;

因为1=1恒成立,因此 username='' OR 1=1 恒成立,因此SQL语句等同于:

SELECT id FROM user_table;

 

三、解决方法

其实解决方法很简单,就是使用PreparedStatement即可;

分享到:
评论

相关推荐

    如何解决sql注入问题

    总结而言,解决SQL注入问题需要开发者、数据库管理员和安全专家的共同努力。通过采用安全编码实践、强化输入验证、合理使用数据库功能以及持续监控和更新安全策略,可以显著降低应用程序遭受SQL注入攻击的风险。

    SQL注入攻击实验报告

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

    sql注入讲解ppt.pptx

    SQL 注入基础知识点总结 SQL 注入是指 web 应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在 web 应用程序中事先定义好的查询语句的结尾上添加额外的 SQL 语句,在管理员不知情的情况下实现非法...

    SQL注入漏洞全接触.ppt

    "SQL注入漏洞全接触"知识点总结 一、 SQL注入漏洞的定义和原理 * SQL注入漏洞是指攻击者通过构造特殊的输入,来获取或修改服务器上的敏感数据。 * SQL注入漏洞的原理是从客户端提交特殊的代码,从而收集程序及...

    mybatis如何防止SQL注入

    这种方式虽然灵活,但容易导致SQL注入问题。例如: ```xml SELECT id, title, author, content FROM blog ORDER BY ${orderParam} ``` 如果`orderParam`的值没有经过恰当的处理,直接使用`ORDER BY ${...

    DVWA之SQL注入详解(包含知识点)

    SQL注入是网络安全领域中的一种常见的攻击手段,它允许攻击者通过在应用程序的输入参数中插入恶意的SQL代码片段,从而在数据库服务器上执行未授权的查询或操作。这种攻击方法对数据库安全构成了极大的威胁,因此了解...

    JavaScript过滤SQL注入字符

    JavaScript过滤SQL注入字符 ...总结,JavaScript在防止SQL注入中扮演了辅助角色,前端过滤可以提高安全性,但必须结合后端验证才能构建坚固的防线。开发者应了解并实施最佳实践,确保应用的安全性。

    SQL注入攻击与防御

    针对SQL注入隐蔽性极强的特点,《SQL注入攻击与防御》重点讲解了SQL注入的排查方法和可以借助的工具,总结了常见的利用SQL漏洞的方法。另外,《SQL注入攻击与防御》还专门从代码层和系统层的角度介绍了避免SQL注入的...

    《SQL注入攻击与防御 第2版》PDF版本下载.txt

    ### SQL注入攻击与防御知识点详解 #### 一、SQL注入概述 SQL注入是一种常见的Web应用程序安全漏洞,攻击...希望这些信息能够帮助您更好地理解SQL注入这一安全问题,并采取有效措施保护您的Web应用程序免受此类攻击。

    使用Python防止SQL注入攻击的实现示例

    ### 使用Python防止SQL注入攻击的实现示例 #### 文章背景与重要性 随着网络技术的发展,Web应用程序的安全性越来越受到人们的重视。开放式Web应用程序安全项目(OWASP)每几年都会发布一次关于Web应用程序最常见...

    sql注入攻击防范解析

    SQL注入攻击是网络安全领域中一个严重的问题,它发生在应用程序未能充分验证或清理用户输入的数据时。当恶意用户通过输入特定的SQL代码,使得数据库执行非预期的操作,就可能发生SQL注入。这种攻击可能导致数据泄露...

    sql注入攻击常用语句总结

    sql注入总结 语句精简 类型丰富 种类齐全 值得学习 欢迎借鉴

    sql注入绕过方法总结

    sql注入绕过方法总结,绕过waf,D盾

    SQL注入之如何检测与判断详细过程

    ### SQL注入检测与判断详细过程 #### 一、SQL注入简介 SQL注入是一种常见的Web应用程序安全漏洞,攻击者可以通过向数据库提交恶意SQL代码来获取敏感数据、修改数据或执行其他非法操作。随着网络安全意识的提高和...

    SQL注入简单总结——过滤逗号注入.pdf

    总结,SQL注入是数据库安全的重要问题,特别是对于逗号过滤的场景,需要开发者采取额外的防范措施。通过理解和应用上述的绕过技巧,可以更好地进行安全测试和防御。同时,不断学习和更新安全知识,以应对不断演化的...

    SQL注入手工检测sql注入检测

    ### SQL注入手工检测详解 #### 一、SQL注入概述 SQL注入是一种常见的Web应用程序安全漏洞,攻击者通过向Web应用程序提交恶意SQL语句,利用这些语句与后端数据库进行交互,进而获取敏感数据或执行非法操作。手工...

    sql注入关键字大全

    ### SQL注入关键字详解 #### 一、SQL注入基础概念 SQL注入是一种常见的安全攻击手段,攻击者通过在输入数据中嵌入恶意SQL代码,利用应用程序对用户输入验证不足的漏洞,实现非法操作数据库的目的。本篇文章将围绕...

    防止sql注入demo

    - 使用ORM框架:如Hibernate、MyBatis等,它们在底层处理了SQL注入问题,减少了直接编写SQL语句的机会。 - 输入验证:对用户输入进行校验,限制长度、类型和格式,拒绝不符合规则的输入。 - 使用过滤器(Filter)...

Global site tag (gtag.js) - Google Analytics