`
498320858
  • 浏览: 388386 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

java开发中的数据安全

阅读更多

在java开发中会经常用到数据库,与数据库打交道的地方多了,数据安全隐患也相应多了,下边就常用的数据库连接工具分析下数据安全的处理:

1.jdbc方式连接数据库:

1.1通常我们都是使用statement去执行sql语句,其实使用这种方式存在很大的安全隐患,需要我们去过滤sql语句,否则一些不法份子很轻易的即可入侵数据库执行非法操作

String sql = "select * from tb_name where name= '"+varname+"' and passwd='"+varpasswd+"'";
如果我们把[' or '1' = '1]作为varpasswd传入进来.用户名随意,看看会成为什么?

select * from tb_name = '随意' and passwd = '' or '1' = '1';
因为'1'='1'肯定成立,所以可以任何通过验证.更有甚者:
把[';drop table tb_name;]作为varpasswd传入进来,则:
select * from tb_name = '随意' and passwd = '';drop table tb_name;有些数据库是不会让你成功的,但也有很多数据库就可以使这些语句得到执行.

1.2其实我们可以采用perstatement,则查询操作变为

perstmt = con.prepareStatement("select * from  tb where name=? and password=?");
perstmt.setString(1,var1);
perstmt.setString(2,var2);

每一种数据库都会尽最大努力对预编译语句提供最大的性能优化.因为预编译语句有可能被重复调用.所以语句在被DB的编译器编译后的执行代码被缓存下来,那么下次调用时只要是相同的预编译语句就不需要编译,只要将参数直接传入编译过的语句执行代码中(相当于一个涵数)就会得到执行.这并不是说只有一个Connection中多次执行的预编译语句被缓存,而是对于整个DB中,只要预编译的语句语法和缓存中匹配.那么在任何时候就可以不需要再次编译而可以直接执行.而statement的语句中,即使是相同一操作,而由于每次操作的数据不同所以使整个语句相匹配的机会极小,几乎不太可能匹配.比如:
insert into tb_name (col1,col2) values ('11','22');
insert into tb_name (col1,col2) values ('11','23');
即使是相同操作但因为数据内容不一样,所以整个个语句本身不能匹配,没有缓存语句的意义.事实是没有数据库会对普通语句编译后的执行代码缓存.这样每执行一次都要对传入的语句编译一次.

当然并不是所以预编译语句都一定会被缓存,数据库本身会用一种策略,比如使用频度等因素来决定什么时候不再缓存已有的预编译结果.以保存有更多的空间存储新的预编译语句.


而如果你使用预编译语句.你传入的任何内容就不会和原来的语句发生任何匹配的关系.(前提是数据库本身支持预编译,但上前可能没有什么服务端数据库不支持编译了,只有少数的桌面数据库,就是直接文件访问的那些)只要全使用预编译语句,你就用不着对传入的数据做任何过虑.

 

2.hibernate

 

原理同jdbc方式一样,单纯的用hql语句来执行些数据库操作的话很容易注入恶意sql,所以建议多采用?和setProperty的方式来实现数据的传输

 

分享到:
评论

相关推荐

    阿里巴巴Java开发手册v1.2.0-1.pdf

    手册分为五大块:编程规约、异常日志、MySQL数据库、工程结构、安全规约,涵盖了Java开发中的各个方面。 编程规约 编程规约是Java开发手册的核心部分,旨在规范Java开发者的编程风格和编码习惯。编程规约包括命名...

    阿里巴巴Java开发手册(泰山版).pdf

    从阿里巴巴集团技术团队的集体智慧结晶和经验总结的《Java开发手册》(泰山版)中,我们可以总结出以下知识点: 1. Java 开发手册的重要性:软件行业的高速发展对开发者的综合素质要求越来越高,不仅需要编程知识点...

    Java开发手册(黄山版2022)

    Java开发手册(黄山版2022) ...Java开发手册(黄山版2022)是帮助Java开发者提高编程质量和效率的重要工具,涵盖了编程中的各个方面,为开发者提供了详细的规约和指南,旨在提高代码的可读性、可维护性和可扩展性。

    java开发项目需求规格说明书资料.pdf

    该文档对项目的需求、功能、性能、界面、数据存储、安全等方面进行了详细的描述,以便开发团队能够按照要求进行开发和测试。 以下是该文档的详细解释: 1. 编写目的 该文档的编写目的是为了确保项目的正确实施,...

    java 日志的数据脱敏的实现方法

    今日给大家介绍一下java 日志的数据脱敏的实现方法,可以更好的保护数据的安全,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    阿里巴巴java开发规范

    阿里巴巴java开发规范手册详细规范了java以及mysql数据库创建时的具体要求。分为编程规约、异常处理、Mysql规约、工程规约、安全规约等。编程规约包含命名规约、常量定义、格式规约、oop规约、集合处理、并发处理、...

    P神-Java安全漫谈

    Java开发人员需要及时更新和升级Java平台和相关组件,以确保应用程序不受已知漏洞的影响。 安全审计和监控:Java应用程序的安全性还需要进行定期的审计和监控,以检测异常行为、潜在的攻击和安全事件。安全审计和...

    java完整性校验解决方案

    而数据安全包括数据传输过程中的安全防范措施,包括数据完整性、传输安全性,接收/发送方不可否认性等方面。下面就数据完整性验证部分做简单的介绍。 下载过程中,没有被其他程序算改过?其他程序可能是网络传输过程...

    OPC UA 的java开发工具包

    OPC UA-java源代码及示例: OPC基金会 (OPC Foundation) 发布了最新的数据通讯统一方法--OPC统一架构 (OPC UA), 涵盖了OPC 实时数据访问规范、OPC历史数据访问规范 、 OPC 报警事件访问规范 和OPC安全协议 的不同...

    JAVA_API1.6文档(中文)

    JAVA开发人员必备是HTML格式的 JavaTM 2 Platform Standard Edition 6 API 规范 本文档是 Java 2 Platform Standard Edition 6.0 的 API 规范。 请参见: 描述 Java 2 Platform 软件包 java.applet 提供创建 ...

    java web项目开发需要掌握哪些技术

    在 Java web 项目开发中,需要掌握多种技术,包括 Java 语言、面向对象分析设计思想、设计模式和框架结构、XML 语言、网页脚本语言、数据库、应用服务器、集成开发环境等。 Java 语言 Java 语言体系比较庞大,包括...

    Java开发作业基于JavaSwing实现的动作类游戏源码.zip

    Java开发作业基于JavaSwing实现的动作类游戏源码.zipJava开发作业基于JavaSwing实现的动作类游戏源码.zipJava开发作业基于JavaSwing实现的动作类游戏源码.zipJava开发作业基于JavaSwing实现的动作类游戏源码.zipJava...

    校招Java开发岗面试知识点解析.docx

    高并发编程是Java开发中非常重要的一部分,包括线程安全、锁机制、原子操作等。面试中可能会问到JUC包中的类和方法,例如ReentrantLock、AtomicInteger等。 4. JVM内存管理 JVM内存管理是Java开发中非常重要的一...

    Java Web项目开发需要掌握哪些技术 共26页.pdf

    XML 语言是 Java Web 项目开发中最重要的数据交换格式。 XML 语言提供了一个统一的格式,允许开发人员使用 XML 语言来交换数据。 5. 网页脚本语言 网页脚本语言是 Java Web 项目开发中最重要的技术之一。 网页脚本...

    Java 安全编码.pdf

    Java 安全编码是 Java 开发语言中的一项重要考虑因素。Java 安全编码的主要目标是保护 Web 应用程序免受各种攻击和漏洞的影响。下面是 Java 安全编码的详细知识点: 1. SQL 注入攻击 SQL 注入攻击是一种常见的 Web...

    安卓开发基于Java开发的DLNA投屏项目源码(课程大作业).zip

    安卓开发基于Java开发的DLNA投屏项目源码(课程大作业).zip安卓开发基于Java开发的DLNA投屏项目源码(课程大作业).zip安卓开发基于Java开发的DLNA投屏项目源码(课程大作业).zip安卓开发基于Java开发的DLNA投屏项目源码...

    Java开发基于区块链的去中心化拍卖系统源码+项目说明.zip

    2、适用人群:主要针对计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、数学、电子信息等)的同学或企业员工下载使用,具有较高的学习借鉴价值。 3、不仅适合小白学习实战练习,也...

    Java开发工程师的工作职责.pdf

    在技术要求方面,Java开发工程师需要具备计算机相关专业,大学本科及以上学历,3年以上工作经验,并熟悉Linux操作系统、基本算法和数据结构、基本的信息安全知识。此外,Java开发工程师还需要熟悉ORACLE数据库开发...

    Java开发基于seetaface6人脸识别(活体检测)的封装源码.zip

    Java开发基于seetaface6人脸识别(活体检测)的封装源码.zipJava开发基于seetaface6人脸识别(活体检测)的封装源码.zipJava开发基于seetaface6人脸识别(活体检测)的封装源码.zipJava开发基于seetaface6人脸识别...

    java开发springboot+shiro企业门户完整前后端系统源码.zip

    java开发springboot+shiro企业门户完整前后端系统源码。基于bootdo开发的企业门户完整前后台系统 附带完整门户前端功能:首页、新闻列表及详情、轮播等; 后端增加新闻文章发布、产品图、基础信息功能; 技术选型 1...

Global site tag (gtag.js) - Google Analytics