一、前言
项目开发中,操作数据库是必不可少的,对于数据库的连接,各种架构对数据库的连接部分都有一些封装,
常用的操作数据库的框架有:MyBatis、JdbcTemplate等有很多。但是,无论使用哪种框架操作数据库,最底层的api实现都是JDBC,就是说,在开发中,JDBC有着举足轻重的地位,将其弄明白也是很重要的。
二、JDBC概述
Java数据库连接–JDBC,是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。它其实是官方定义的一套操作所有的关系型数据库的规则, 我们所熟知的关系型数据库有mysql,SQL server, Oracle,DB2等等。各个数据库连接的方式都不一样,我们程序员不可能连接mysql数据库对应一套编码,连接sql server在进行一套编码吧,so,JDBC的出现解决了这个问题,各个数据库的厂商去实现这套接口,提供数据库的驱动的jar包。而我们用这套接口进行编程,真正执行的代码是驱动jar包中的实现类。
如下图:Application为应用程序 调用接口,下边是各个驱动,然后是各个数据库
三、JDBC编程
JDBC开发前的准备工作,先从官网上下载对应的驱动jar包,然后将其配置到环境变量classpath当中:
查看环境变量中是否有classpath变量,如果上下都没有,新建如下:
输入变量名:classpath
变量值: .;D:\course\06-JDBC\resources\MySql Connector Java 5.1.23\mysql-connector-java-5.1.23-bin.jar
【注意】:.; 千万不可以省略。
JDBC编程六步
第一步:注册驱动(告诉Java程序,即将要连接的是哪个数据库)
第二步:获取连接(JVM的进程和数据库进程之间的通道打开了,这属于进程之间的通信,使用完之后一定要关闭通道。)
第三步:获取数据库操作对象(专门执行sql语句的对象)
第四步:执行SQL语句
第五步:处理查询结果集(只有当第四步执行的是select语句的时候,才有这第五步处理查询结果集。)
第六步:释放资源(使用完资源之后一定要关闭资源。Java和数据库属于进程之间的通信,开启之后一定要关闭。)
案例1
推荐这种注册方式–反射机制
四、SQL注入问题
4.1 定义
SQL注入是一种常见的Web安全漏洞,主要形成的原因是在数据交互中,前端的数据传入到后台处理时,没有做严格的判断,导致其传入的“数据”拼接到SQL语句中后,被当作SQL语句的一部分执行。 从而导致数据库受损(被脱库、被删除、甚至整个服务器权限陷)。
即:注入产生的原因是后台服务器接收相关参数未经过滤直接带入数据库查询
4.2 SQL注入示例
假设有一个场景: 用户通过用户名称,进行精确查询,用户输入的信息中有SQL关键字,并且参与了SQL语句的编译,导致SQL语句含义扭曲,最终导致了SQL注入。用户本来只应该查询到他自己的信息,但是却查出来了所有的用户信息。
SQL注入,简单来说,就是用一些SQL关键字,来导致一些不正常的现象,下面的这条sql,由于and优先级高于or,在用户录入userName = ‘lisi’ or ‘hello’ = ‘hello’信息进行查询时,执行时sql就变成了select * from user where status = 1 and userName = ‘lisi’ or ‘hello’ = ‘hello’,导致SQL语句条件永远为真,会查出所有的用户信息数据。
4.3 漏洞危害
1. 数据库信息泄漏:数据库中存放的用户的隐私信息的泄露。
2. 网页篡改:通过操作数据库对特定网页进行篡改。
3. 网站被挂马,传播恶意软件:修改数据库一些字段的值,嵌入网马链接,进行挂马攻击。
4. 数据库被恶意操作:数据库服务器被攻击,数据库的系统管理员帐户被窜改。
5. 服务器被远程控制,被安装后门:经由数据库服务器提供的操作系统支持,让黑客得以修改或控制操作系统。
6. 破坏硬盘数据,瘫痪全系统。
4.4 sql注入防范
解决SQL注入问题的关键是对所有可能来自用户输入的数据进行严格的检查、对数据库配置使用最小权限原则。
1. 对输入进行严格的转义和过滤
2. 使用参数化(Parameterized):目前有很多ORM框架会自动使用参数化解决注入问题,但其也提供了”拼接”的方式,所以使用时需要慎重!
3. 云端防护(如阿里云盾)
星辰大海,永不止步
END
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/5328.html