目录
JDBC相关知识
概述
JDBC:Java访问数据库的解决方案
JDBC定义了一套标准接口,即访问数据库的通用API,不同的数据库厂商根据各自的数据库特点去实现这些接口
JDBC希望用相同的方式访问不同的数据库,让具体的数据库操作与数据库厂商实现无关,从而在不同数据库之间轻易的进行切换。
相关类和接口
- 驱动管理类(Driver Manager)
- 连接接口(Connection)
- 语句对象接口(Statement)
- 结果集接口(ResultSet)
工作原理
- 加载驱动:Class.forName()
- 获取Connection连接:DriverManager
- 执行SQL语句:创建Statement
- 查询结果:返回ResultSet
- 释放资源(先获取后释放)
案例:添加、修改、删除、查询
SQL注入
概述
SQL注入:通过一些特殊的符号,让原本的sql失效,让sql执行新的指令
防止SQL注入的方法
- 正则表达式(处理输入进来的数据)
- 加转义字符
- JDBC提供了处理SQL注入的方法:1.sql语句中所有参数的用?占位;2.PreparedStatement对象预处理sql语句;3.setObject()方法:将?变成真正的参数;4.executeQuery():执行(不传sql语句)
注:JDBC 操作数据库的index都是从1开始的
什么是SQL注入,如何防止SQL注入?
SQL注入(SQL Injection)是一种网络安全漏洞,允许攻击者在应用程序的SQL查询中插入恶意代码。这种攻击通常发生在应用程序没有正确验证或清理用户输入数据的情况下,导致攻击者能够操纵数据库查询,获取、修改或删除敏感信息。
防止sql注入:
- 使用预编译的语句(Prepared Statements):如使用?占位符,并通过编程语言的库绑定参数。
- 使用存储过程(Stored Procedures):将SQL代码预先存储在数据库中,并通过参数调用。
- 验证和清理用户输入:确保用户输入不包含恶意字符或SQL关键字。
- 使用ORM(Object-Relational Mapping)工具:许多ORM工具会自动处理SQL构建,减少注入风险。