`
ljl_xyf
  • 浏览: 632813 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java防SQL注入MySQL数据查询

    博客分类:
  • java
阅读更多

/**
 *
 */
package user.DAO;

import java.sql.*;

import user.entity.User;

/** *//**
 * 用户数据访问层
 * @author http://www.my400800.cn
 *@version 1.0
 *日期2010 01 12
 */
public class UserDAO {
    /** *//**
     * 根据用户名和密码查找用户,找到了返回 user 对象,否则返回 null
     * @param(参量) user
     */
    public findUserByUsernamePassword(User user){
        // 1.注册驱动
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }//mysql驱动
       
        java.sql.Connection conn = null;
        PreparedStatement pstmt = null;   
        ResultSet rs = null;
       
        try {
            //2.获取数据库的连接(接数据库)
            conn = java.sql.DriverManager.getConnection(
                    "jdbc:mysql://localhost/stums?useUnicode=true&characterEncoding=GBK","root","admin");
           
            //执行SQL
            pstmt = conn.prepareStatement("select * from student where Sno =? and Password = ?");
           
         
   //设置参数防止SQL注入
            pstmt.setString(1, user.getUsername());
            pstmt.setString(2, user.getPassword());
           
            //获取数据集
            rs = pstmt.executeQuery();

           
            if(rs != null && rs.next()){
                user.setId(rs.getInt("Sno"));
                return user;
            }
           
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{    //释放资源
            try {
                rs.close();     //关闭数据集
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            try {
                pstmt.close();    //关闭表连接
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            try {
                conn.close();    //关闭数据库连接
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
       
        return null;
       
       
    }

}

分享到:
评论

相关推荐

    mybatis如何防止SQL注入

    SQL注入是一种常见的Web应用程序安全漏洞,攻击者可以通过提交恶意的SQL代码到应用程序的输入字段中(如表单、URL等),利用这些输入来操控数据库执行非预期的操作,进而获取敏感数据、修改数据甚至破坏整个数据库...

    SQL注入源码+SQL注入命令

    正确的方法是使用参数化查询,例如预编译的`PreparedStatement`,以防止SQL注入: ```java String sql = "SELECT * FROM users WHERE id=?"; PreparedStatement pstmt = connection.prepareStatement(sql); pstmt....

    java 连接sql、mysql 驱动程序

    `Statement`用于执行静态SQL,而`PreparedStatement`则允许预编译的SQL语句,提高性能并防止SQL注入。 6. **结果集处理**: 执行查询后,会返回一个`ResultSet`对象,你可以遍历它来获取查询结果。 7. **关闭资源**...

    Jsp防SQL注入

    在JSP(Java Server Pages)开发中,防止SQL注入至关重要,因为它可以保护用户数据的完整性和系统的安全性。本文将详细介绍如何在JSP中防范SQL注入。 ### 1. 理解SQL注入原理 SQL注入是通过在用户输入的数据中插入...

    利用JDBC工具类的方式实现mysql数据库的连接并且完成登录相关功能(防sql注入方式)

    在本示例中,我们将探讨如何使用JDBC(Java Database Connectivity)工具类与MySQL数据库建立连接,并实现登录功能,同时重点介绍如何利用PreparedStatement防止SQL注入攻击。 首先,JDBC是Java语言访问数据库的...

    网上书店 java sql java sql 网上书店 java sql

    Java的安全特性可以帮助保护用户数据,防止SQL注入等攻击。同时,使用HTTPS协议保证数据传输的安全,确保用户隐私不被泄露。 总结来说,"网上书店 java sql"这个项目涵盖了Java Web开发的多个核心方面:使用Java...

    java oracle java sql java mysql jar

    此外,执行SQL语句时,可以使用PreparedStatement以防止SQL注入,并提高查询性能。 压缩包中的"java各种数据库的连接及优化.wps"可能包含关于如何优化数据库连接、使用连接池、处理批处理以及查询优化等更深入的...

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

    SQL注入是一种常见的Web应用程序安全漏洞,攻击者可以通过向数据库提交恶意SQL代码来获取敏感数据、修改数据或执行其他非法操作。随着网络安全意识的提高和技术的发展,传统的SQL注入检测方法(如简单的字符串匹配)...

    SQL注入攻击与防御

    SQL注入是Internet上最危险、最有名的安全漏洞之一,本书是目前唯一一本专门致力于讲解SQL威胁的图书。本书作者均是专门研究SQL注入的安全专家,他们集众家之长,对应用程序的基本编码和升级维护进行全面跟踪,详细...

    sqlselect.rar_java mysql_java mysql查询_查询数据库

    `Statement`用于执行静态SQL,而`PreparedStatement`用于执行预编译的SQL,能有效防止SQL注入攻击。例如: ```java String query = "SELECT * FROM mytable"; PreparedStatement pstmt = conn.prepareStatement...

    java的sql解析器jsqlparser

    1. **SQL审核**:确保用户输入的SQL符合安全标准,防止SQL注入攻击。 2. **代码生成**:根据业务逻辑动态生成SQL,比如在ORM框架中,可以根据实体类生成对应的SELECT、INSERT、UPDATE和DELETE语句。 3. **SQL优化**...

    自己动手编写SQL注入漏洞扫描工具

    标题中的“自己动手编写SQL注入漏洞扫描工具”指的是创建一个能够自动检测Web应用程序是否存在SQL注入漏洞的软件。SQL注入是一种常见的网络安全威胁,攻击者通过在输入字段中插入恶意的SQL语句来操纵数据库,获取...

    SQL注入经典教程(珍藏版).rar

    SQL注入是一种常见的网络安全威胁,它发生在应用程序未能充分验证或过滤用户输入的数据,导致恶意SQL代码被插入到数据库查询中。这个“SQL注入经典教程(珍藏版)”很可能包含了一系列关于如何预防、检测和修复SQL注入...

    mysql-connector-java-8.0.11

    - **SQL执行**:通过Statement和PreparedStatement对象执行SQL语句,支持预编译的参数化查询,提高效率并防止SQL注入攻击。 - **事务处理**:支持事务的开始、提交和回滚。 - **结果集处理**:获取和遍历查询结果...

    SQL注入攻击与防御(安全技术经典译丛)

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

    sql和mysql jdbc包

    在上述示例中,`PreparedStatement`预编译了SQL语句,提高了执行效率并降低了SQL注入的风险。`ResultSet`对象则用于存储查询结果,通过遍历结果集来获取数据。 总结来说,SQL2005和MySQL是两种不同的数据库系统,...

    springboot在项目中集成 mysql,sqlserver多数据源项目源代码.zip

    在现代企业级应用开发中,数据源的多样性是常见的需求,比如同时使用MySQL和SQL Server进行数据存储。Spring Boot作为一款轻量级的框架,它提供了便捷的方式将这些不同的数据库集成到同一个项目中。本项目源码即展示...

    SQL注入技术.ppt

    1. **不使用预编译的PreparedStatement对象**:在Java Web开发中,推荐使用PreparedStatement来处理SQL查询,因为它可以防止SQL注入。当使用字符串拼接方式构建SQL语句时,如`"select * from foodinfo where foodId ...

    java连接数据库的demo(包括sql、mysql)

    `Statement`适用于静态SQL,而`PreparedStatement`适用于预编译的SQL,可以防止SQL注入攻击。 4. **执行SQL操作**:执行查询、更新或其他SQL语句。 5. **处理结果**:如果执行的是查询,使用`ResultSet`对象处理...

    可注入SQL的代码、防止SQL注入

    下面是一个使用Java的JDBC进行数据库查询的例子,这个例子使用了参数化查询,从而有效防止SQL注入攻击: ```java String user = "your_username"; String pwd = "your_password"; String url = "jdbc:mysql://...

Global site tag (gtag.js) - Google Analytics