回顾下之前jdbc的开发步骤: 1:建项目,引入数据库驱动包 2:加载驱动 Class.forName(..); 3:获取连接对象 4:创建执行sql语句的stmt对象;  写sql 5:执行sql a) 更新    delete/insert/update !:executeUpdate(); b) 查询    select !:executeQuery(); 6:关闭/异常 之前有说过,Statement接口和PreparedStatement接口的区别,其中的一个就是: PreparedS…
day17总结 今日内容 l JDBC 1.1 上次课内容总结 SQL语句: 1.外键约束:foreign key * 维护多个表关系! * 用来保证数据完整性! 2.三种关系: * 一对多: * 一个客户可以对应多个订单,一个订单只属于一个客户! * 建表原则: * 在多的一方创建一个字段,作为外键指向一的一方的主键!!! * 多对多: * 一个学生可以选择多个课程,一个课程也可以被多个学生选择! * 建表原则: * 创建第三张表,第三张表中放入两个字段,作为外键分别指向多对多双方的主键! *…
用户名: __________ 密码:——————— 假如没有使用预处理的Statement 对象 拼接字符串查数据库的话,易收到sql注入攻击: 例如说 : mysql 中   #代表的是单行注释 SELECT * FROM t_users WHERE EID=''OR 1=1 #' AND EName='missli' 你在用户名输入框中 只要填写  'OR 1=1 #  这个用户名,那么无论怎么验证 都会通过的! 甚至更邪恶一点的你可以在输入框中填写  'OR 1=1 ;Drop  t_u…
在JDBC对数据库进行操作的时候,SQL注入是一种常见的针对数据库的注入攻击方式.如下面的代码所演示,在我们的提交字段中掺入了SQL语句,会使得程序的登录校验失效: package org.lyk.main; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; impor…
如何在项目中有效的防止SQL注入 写给需要的人,所有的问题源自我们的不重视. 本章略过"什么是SQL注入","如何去利用SQL注入"的讲解,仅讲如何去防御 PS在这里讲的不是Postscript 来自 E序列 技术支持小组 贾少雄(360企业安全) 联合编辑 本项目涉及的技术 ORM框架:Mybatis/Hibernate(HQL)/Spring Data-JPA(JPQL) 目录 事前须知 SQL注入的产生 PreparedStatement 正则表达式过滤和筛选…
MySQL_(Java)使用JDBC向数据库发起查询请求 传送门 MySQL_(Java)使用JDBC创建用户名和密码校验查询方法 传送门 MySQL数据库中的数据,数据库名garysql,表名garytb,数据库中存在的用户表 存在SQL注入问题 使用preparestatement做查询语句时可解决SQL注入的问题 pstmt.setString(1, username)将username作为一个结果传入到"where username = ?"的问号中 String sql =…
前言近日闲来无事,快两年都没怎么写代码了,打算写几行代码,做代码审计一年了,每天看代码都好几万行,突然发现自己都不会写代码了,真是很DT.想当初入门代码审计的时候真是非常难,网上几乎找不到什么java审计的资料,摸索了很长时间,搜到的也仅仅讲了点原理,为了给想学java代码审计的朋友门一点入门资料,就开始写<java代码审计连载>系列文章,本文章适合初学者,大牛留下脚印后请绕过,若代码有什么其他问题请忽略,因为那不是重点,此片只讲述SQL注入.本次写了两个简单的页面,一个登陆页面,一个查询id…
public class pr { public static void main(String[] args) { Connection conn = null; Statement st = null; ResultSet rs = null; try { // 加载驱动 // DriverManager.registerDriver(new com.mysql.cj.jdbc.Driver()); 不用这种方法加载,因为源码里面已经有static代码块加载驱动了,直接加载类进内存就行了 C…
1. Jdbc中大文本类型的处理 Oracle中大文本数据类型, Clob    长文本类型   (MySQL中不支持,使用的是text) Blob    二进制类型 MySQL数据库, Text    长文本类型 Blob    二进制类型 需求: jdbc中操作长文本数据. 设计: 测试表 编码: 保存大文本数据类型 读取大文本数据类型 保存二进制数据 读取二进制数据 MYSQL: -- 测试大数据类型 CREATE TABLE test( id INT PRIMARY KEY AUTO_I…
之前的代码中,以下代码很多时候并不是固定的: private static String url = "jdbc:mysql://localhost:3306/day1029?useUnicode=true&characterEncoding=GB2312"; // 数据库的用户名和密码 private static String user = "root"; private static String password = "root"…