`

存在sql注入式攻击的最差实践代码(Java新手注意了)

    博客分类:
  • java
阅读更多
下面是自己以前初学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代码注入到应用程序中,以便在目标数据库中执行该代码的安全攻击。它通常是由于程序未正确过滤用户输入的数据导致的。 - **SQL注入攻击的步骤**: - **确定Web应用程序...

    Java防止SQL注入的几个途径

    因此,防止 SQL 注入是 Java 开发者必须注意的安全问题。 1.杜绝 SQL 拼接 最简单的办法是杜绝 SQL 拼接。SQL 注入攻击能得逞是因为在原有 SQL 语句中加入了新的逻辑。如果使用 PreparedStatement 来代替 ...

    SQL防注入式攻击源代码

    ### SQL防注入式攻击源代码知识点解析 #### 一、SQL注入概述 SQL注入是一种常见的安全漏洞,攻击者可以通过在应用程序的输入字段中插入恶意SQL语句来操纵数据库执行非授权操作。这种攻击可能导致敏感数据泄露、...

    C# 防止SQL注入式攻击

    本文将深入探讨C#防止SQL注入式攻击的相关知识点,并结合"Ex18_04防止SQL注入式攻击"这一示例进行说明。 1. **理解SQL注入攻击** SQL注入攻击通常发生在应用程序没有正确验证用户输入时,攻击者可以通过输入特定的...

    java防sql注入攻击过滤器

    在Java开发中,SQL注入是一种常见的安全威胁,它允许攻击者通过输入恶意SQL代码来操纵数据库,获取、修改或删除敏感数据。为了防止此类攻击,开发者通常会使用一种称为“SQL注入过滤器”的机制。本篇文章将深入探讨...

    SQL注入过滤 (Java版)

    在IT行业中,SQL注入是一种常见的安全威胁,攻击者通过输入恶意的SQL代码来获取、修改、删除数据库中的敏感信息。为了防止这种情况发生,开发者需要在应用程序中实施有效的防御策略,其中一种方法就是使用过滤器...

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

    SQL注入是一种常见的网络安全威胁,它发生在应用程序未能充分验证或过滤用户输入的数据时,导致恶意SQL代码可以被插入到数据库查询中。此攻击方法利用了Web应用程序的漏洞,使得攻击者能够执行非授权的数据库操作,...

    SQL注入攻击与防御.pdf

    SQL注入是一种常见的网络攻击技术,攻击者通过在Web应用的输入字段中嵌入恶意的SQL代码,利用数据库管理系统(DBMS)的解析错误执行非法操作。SQL注入能够绕过正常的认证机制,获取敏感信息,甚至控制整个数据库。...

    SQL注入攻击与防御

    《SQL注入攻击与防御》作者均是专门研究SQL注入的安全专家,他们集众家之长,对应用程序的基本编码和升级维护进行全面跟踪,详细讲解可能引发SQL注入的行为以及攻击者的利用要素,并结合长期实践经验提出了相应的...

    SQL注入式攻击的分析与防范

    SQL注入式攻击的分析与防范 学术论文 有深度

    SQL注入漏洞演示源代码

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

    歼灭SQL注入式攻击.pdf

    SQL注入式攻击是一种常见的网络攻击手段,其本质是利用了应用程序在处理用户输入时的安全漏洞,通过输入恶意的SQL代码,使得攻击者能够对数据库进行非法查询和操作。这种攻击不仅威胁到数据的安全性,还有可能破坏...

    信息安全技术之SQL注入式攻击

    信息安全技术之SQL注入式攻击 SQL注入式攻击是一种常见的网络攻击方式,通过将恶意的SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串中,欺骗服务器执行恶意的SQL命令。这种攻击方式可以让攻击者获得...

    SQL注入攻击与防御-第2版

    主要内容: ·发现、确认和自动发现SQL注入漏洞 ·通过SQL注入利用漏洞 ·在代码中发现SQL注入的方法和技巧 ·利用操作系统的漏洞 ·在代码层和平台层防御SQL注入攻击 ·确定是否已经遭到SQL注入攻击

    最新ASP通用防SQL注入代码

    从标签"防注入"、"最新ASP SQL注入代码"、"最新ASP通用防SQL注入代码"我们可以看出,这个压缩包文件的核心内容是关于防止ASP应用程序遭受SQL注入攻击的代码示例,它适用于各种ASP应用场景。 在压缩包内的文件"通用...

    ASP中SQL注入式攻击的防范

    ASP中的SQL注入式攻击主要源于应用程序在处理用户输入数据时的不当操作,导致攻击者能够构造恶意的SQL命令,从而对服务器上的数据库进行非法操作。这类攻击的核心在于,攻击者利用了程序没有对用户输入进行充分验证...

    基于.NET的SQL注入式攻击防范策略.pdf

    基于.NET的SQL注入式攻击防范策略涉及多个方面,是当前网络安全领域中的一个重要课题。本文首先分析了.NET平台下SQL注入式攻击的原理和常见攻击过程,随后提出了相应的防范措施。 1. SQL注入式攻击原理与过程 SQL...

    SQL注入攻击原理分析及JavaWeb环境下的防范措施.pdf

    使应用程序存在安全隐患,任何用户可以提交一段数据库查询代码,并根据程序返回的结果,获得某些他想得知的数据,造成用户可以在输入中包含恶意代码篡改程序功能。更严重的用户还可能窃取最高管理权限,删除数据库中...

Global site tag (gtag.js) - Google Analytics