`
498320858
  • 浏览: 393058 次
  • 性别: 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多线程编程中数据安全的应用研究 (1).pdf

    Java多线程编程中数据安全问题的研究对于软件开发和计算机系统的安全性具有非常重要的意义。随着计算机技术的发展,多线程编程将变得越来越重要。因此,研究Java多线程编程中数据安全问题将有助于提高软件开发和...

    Java安全编码培训.pdf

    Java安全编码培训是针对Java开发人员进行的一项专业培训,旨在提升程序员在编写代码时对安全性问题的认识和能力,防止在软件开发过程中引入安全隐患。本次培训涵盖了安全编码的重要性和基本概念,包括安全编码考核...

    java web接口开发demo

    【Java Web接口开发】是Web应用程序开发中的一个重要环节,它允许不同的系统或客户端通过网络进行数据交互。在Java世界中,实现Web接口通常涉及到Servlet、JSP、Spring MVC或者RESTful API等技术。本示例"java web...

    P神-Java安全漫谈

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

    无人机后端开发java无人机后端开发java

    在无人机技术领域,后端开发扮演着至关重要的角色,它负责处理无人机的飞行控制、数据传输、任务规划等核心功能。本主题将深入探讨使用Java进行无人机后端开发的相关知识点,帮助你理解如何构建高效、稳定的无人机...

    基于计算机软件安全开发的JAVA编程语言研究.pdf

    本文主要探讨了在计算机软件安全开发过程中,如何有效地融入JAVA编程语言的技术和方法。由于信息技术的飞速发展,计算机软件在人们的生活中扮演着越来越重要的角色,而软件的安全性成为了软件开发中极为重要的一环。...

    OPC UA JAVA开发包

    总之,“OPC UA JAVA开发包”是Java开发者涉足OPC UA领域的重要工具,通过它,你可以构建与OPC UA兼容的高效、安全的系统,实现设备和应用间的无缝交互。对于工业自动化、物联网(IoT)和智能工厂的开发,这是一项非常...

    Java开发之道 pdf

    通过以上对《Java开发之道》一书的概述和知识点梳理可以看出,本书不仅覆盖了Java语言的基础知识,还涉及了许多高级特性和实际开发中常见的技术框架。对于希望系统学习Java编程的初学者或是想要提升自身技能的开发者...

    RFID读写器开发指南-Java1

    首先,你需要安装必要的开发环境和库,然后创建Java项目,接着配置设备连接代码,最后编写读写数据的逻辑。 4. 连接说明 4.1. RS232连接 RS232是最常见的串行通信接口,适用于短距离、低速率的通信。开发者需要了解...

    用JAVA开发网络游戏教程

    【标题】:“用JAVA开发网络游戏教程” 在游戏开发领域,Java是一种广泛应用的编程语言,尤其在构建网络游戏方面,它的跨平台特性和强大的网络支持使其成为理想的选择。本教程旨在指导开发者如何利用Java来创建网络...

    基于java的荒漠治理数据管理软件的设计与开发.pdf

    综上所述,本文详细阐述了基于Java开发的荒漠治理数据管理软件的设计与实现过程。软件采用了当前主流的开发技术和工具,能够满足科研团队在荒漠治理研究中对数据管理的需求。通过有效利用Java的跨平台特性,该软件...

    Java语言安全编程规范

    在Java中,安全性不仅涉及代码的正确性,还包括防止恶意攻击、数据保护以及遵循最佳实践来降低潜在的安全风险。以下是一些核心的Java安全编程原则和知识点: 1. 类加载器与访问控制:理解Java的类加载机制对于安全...

    中控Java二次开发demo

    同时,安全性和稳定性是开发的重点,避免出现数据泄露或系统崩溃的情况。 总之,"中控Java二次开发demo"是一个宝贵的资源,它为Java开发者提供了一个实践和学习中控考勤系统开发的起点,帮助他们快速入门并构建出...

    计算机软件开发中JAVA编程语言的应用.pdf

    Java编程语言在计算机软件开发领域具有重要的地位和广泛的应用,其特点和优势对于提高软件的开发效率、安全性和灵活性方面起到了关键作用。 首先,Java编程语言具有编写结构简单的特点,与C++相比,Java的代码结构...

    AS3+JAVA网游开发数据交互源码.rar

    这个“AS3+JAVA网游开发数据交互源码”提供了使用ActionScript 3(AS3)和Java这两种语言进行网络数据交互的实例。下面我们将详细探讨这些知识点。 1. **ActionScript 3 (AS3)** AS3是Adobe Flash平台的主要编程...

    JAVA RFID 开发API

    在《Sun Java™ System RFID Software 3.0 Developer’s Guide》这份文档中,主要介绍了如何使用Java进行RFID(射频识别)应用的开发。该文档由Sun Microsystems, Inc.发布,版权日期为2006年2月。本文档提供了关于...

    Global Platform javacard 开发 中文规范

    在JavaCard的开发过程中,Global Platform提供了API,使得开发者可以编写和管理Applets。这些API包括了安全管理、卡片管理、交易处理等功能。例如,通过GP API,开发者可以实现对私钥的加密存储,确保数据的安全性;...

    java webService接口开发案例

    Java WebService接口开发是将Java应用程序暴露为网络服务的一种方式,允许不同系统间的数据交换和交互。本案例将深入探讨如何使用Java实现Web服务的创建、发布和调用。 一、理解WebService WebService是一种基于...

    中控智慧考勤机Java二次开发Demo

    在Java二次开发过程中,你需要了解以下几个核心知识点: 1. **设备通信协议**:中控考勤机通常使用特定的通讯协议与服务器进行数据交换,例如TCP/IP、UDP或串口通信。Java Demo中会展示如何使用这些协议建立连接,...

Global site tag (gtag.js) - Google Analytics