下面是自己以前初学JDBC时候写的代码,存在sql注入漏洞。
不安全因素:statement。。。应该用Preparedstatement来代替statement,这样我们就可以使用占位符作为实参来定义sql语句,从而避免sql注入的攻击。
当然也可以用statement,你得注意你的sql的写法,要是下例肯定不行。还得对url恶意传入参数进行过滤(SQL元字符处理)。。。这样就比较麻烦了,而且也无法保证绝对的安全。
我们在用hibernate等框架的时候(hql语句),避免sql注入攻击也是一样的,关键是不要用string来构造sql语句,不管什么框架,还是纯JDBC,只要用Preparedstatement就OK。。。一定要用占位符作为实参来构造sql(或hql)语句。
package cn.zhd;
import java.io.*;
import org.apache.log4j.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.ResultSet;
public class LoginDemo {
public void execute(String user,String pass){
boolean foo=false;
try{
Class.forName("com.mysql.jdbc.Driver");
Connection con=DriverManager.getConnection("jdbc:mysql://localhost/students","root","");
Statement stam=con.createStatement();
//存在注入攻击漏洞:select * from login where user='' or'x'='x' or 'x'='' and '1'
ResultSet rs=stam.executeQuery("select * from login where user='" + user + "' and pass='"+ pass + "'");
while(rs.next()){
foo=true;
}
if(foo){
System.out.println("登陆成功");
}
else
{
System.out.println("用户名密码错误");
}
}catch(ClassNotFoundException e){
e.printStackTrace();
}catch(SQLException e){
e.printStackTrace();
}
}
public static void main(String[] args){
Logger log=Logger.getLogger(LoginDemo.class);
try{
LoginDemo ld=new LoginDemo();
BufferedReader bf=new BufferedReader(new InputStreamReader(System.in));
log.info("请输入用户名");
String bf_str=bf.readLine();
log.info("请输入密码");
String bf2_str=bf.readLine();
bf.close();
ld.execute(bf_str,bf2_str);
}catch(IOException e){
e.printStackTrace();
}
}
}
当输入用户名的时候输入:' or 'x'='x' or '2'='
密码随便输.....
成功登陆了吧.....
(转)
分享到:
相关推荐
- **SQL注入的概念**:SQL注入是一种将恶意SQL代码注入到应用程序中,以便在目标数据库中执行该代码的安全攻击。它通常是由于程序未正确过滤用户输入的数据导致的。 - **SQL注入攻击的步骤**: - **确定Web应用程序...
因此,防止 SQL 注入是 Java 开发者必须注意的安全问题。 1.杜绝 SQL 拼接 最简单的办法是杜绝 SQL 拼接。SQL 注入攻击能得逞是因为在原有 SQL 语句中加入了新的逻辑。如果使用 PreparedStatement 来代替 ...
### SQL防注入式攻击源代码知识点解析 #### 一、SQL注入概述 SQL注入是一种常见的安全漏洞,攻击者可以通过在应用程序的输入字段中插入恶意SQL语句来操纵数据库执行非授权操作。这种攻击可能导致敏感数据泄露、...
本文将深入探讨C#防止SQL注入式攻击的相关知识点,并结合"Ex18_04防止SQL注入式攻击"这一示例进行说明。 1. **理解SQL注入攻击** SQL注入攻击通常发生在应用程序没有正确验证用户输入时,攻击者可以通过输入特定的...
在Java开发中,SQL注入是一种常见的安全威胁,它允许攻击者通过输入恶意SQL代码来操纵数据库,获取、修改或删除敏感数据。为了防止此类攻击,开发者通常会使用一种称为“SQL注入过滤器”的机制。本篇文章将深入探讨...
在IT行业中,SQL注入是一种常见的安全威胁,攻击者通过输入恶意的SQL代码来获取、修改、删除数据库中的敏感信息。为了防止这种情况发生,开发者需要在应用程序中实施有效的防御策略,其中一种方法就是使用过滤器...
SQL注入是一种常见的网络安全威胁,它发生在应用程序未能充分验证或过滤用户输入的数据时,导致恶意SQL代码可以被插入到数据库查询中。此攻击方法利用了Web应用程序的漏洞,使得攻击者能够执行非授权的数据库操作,...
SQL注入是一种常见的网络攻击技术,攻击者通过在Web应用的输入字段中嵌入恶意的SQL代码,利用数据库管理系统(DBMS)的解析错误执行非法操作。SQL注入能够绕过正常的认证机制,获取敏感信息,甚至控制整个数据库。...
《SQL注入攻击与防御》作者均是专门研究SQL注入的安全专家,他们集众家之长,对应用程序的基本编码和升级维护进行全面跟踪,详细讲解可能引发SQL注入的行为以及攻击者的利用要素,并结合长期实践经验提出了相应的...
SQL注入式攻击的分析与防范 学术论文 有深度
在这个"SQL注入漏洞演示源代码"中,我们可以深入理解这种攻击方式的工作原理,并学习如何防止它。 SQL注入是通过输入恶意的SQL语句来操纵或破坏数据库的一种手段。攻击者通常在Web表单中输入特殊字符序列,使得应用...
SQL注入式攻击是一种常见的网络攻击手段,其本质是利用了应用程序在处理用户输入时的安全漏洞,通过输入恶意的SQL代码,使得攻击者能够对数据库进行非法查询和操作。这种攻击不仅威胁到数据的安全性,还有可能破坏...
信息安全技术之SQL注入式攻击 SQL注入式攻击是一种常见的网络攻击方式,通过将恶意的SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串中,欺骗服务器执行恶意的SQL命令。这种攻击方式可以让攻击者获得...
主要内容: ·发现、确认和自动发现SQL注入漏洞 ·通过SQL注入利用漏洞 ·在代码中发现SQL注入的方法和技巧 ·利用操作系统的漏洞 ·在代码层和平台层防御SQL注入攻击 ·确定是否已经遭到SQL注入攻击
从标签"防注入"、"最新ASP SQL注入代码"、"最新ASP通用防SQL注入代码"我们可以看出,这个压缩包文件的核心内容是关于防止ASP应用程序遭受SQL注入攻击的代码示例,它适用于各种ASP应用场景。 在压缩包内的文件"通用...
ASP中的SQL注入式攻击主要源于应用程序在处理用户输入数据时的不当操作,导致攻击者能够构造恶意的SQL命令,从而对服务器上的数据库进行非法操作。这类攻击的核心在于,攻击者利用了程序没有对用户输入进行充分验证...
基于.NET的SQL注入式攻击防范策略涉及多个方面,是当前网络安全领域中的一个重要课题。本文首先分析了.NET平台下SQL注入式攻击的原理和常见攻击过程,随后提出了相应的防范措施。 1. SQL注入式攻击原理与过程 SQL...
使应用程序存在安全隐患,任何用户可以提交一段数据库查询代码,并根据程序返回的结果,获得某些他想得知的数据,造成用户可以在输入中包含恶意代码篡改程序功能。更严重的用户还可能窃取最高管理权限,删除数据库中...