`

【Java核心-安全基础】Java的安全机制

    博客分类:
  • Java
 
阅读更多

任何可以用来绕过系统安全策略限制的缺陷都是安全漏洞。
构建安全可靠的服务需要通过整体性的安全设计和综合性的防范手段。
 

Java的安全机制

1. 运行时安全机制



 

字节码校验

类加载过程中,字节码验证,防止不合规的代码影响JVM运行或载入恶意代码。
如,自行编译String类替换JDK的String类就无法通过类加载。

 

Class Loader 隔离代码

  • 应用无法获取 Bootstrap Class-Loader 对象实例。
  • 不同的 Class Loader 可以起到容器的作用,隔离模块间不必要可见性。

 

SecurityManager 机制

利用 SecurityManager 机制和相关组件,限制代码运行时行为能力。
对安全要求非常高的应用可以开启 SecurityManager:

-Djava.security.manager

 

注意:启用 Security会导致 10%~15% 的性能下降
Oracle 官方有非常保守的建议:如果你确定你的应用不会运行恶意代码,也没有用户身份验证,那么可以禁用SecurityManager。

 

2. 安全框架API

这些API与JDK厂商有关,不同的JDK实现者可能会定制自己的加密算法实现。

  • 加密、解密 API
  • 授权、鉴权 API
  • 安全通信相关类库。如 TLS、OSCP等协议的标准实现

 

3. JDK集成的安全工具

JDK包中附带了一些安全相关的工具。如:

  • keytool:可用于管理秘钥、证书、keystore文件等。
  • jarsigner:对jar文件进行签名或验证

 

常见攻击类型

中间人攻击(Man-in-the-middle attack)

顾名思义,就是攻击者在客户端与服务端之间实施攻击,让客户端以为攻击者是服务端,让服务端以为攻击者是客户端。

即使是HTTPS协议,也可能被中间人攻击。因为在连接未完整建立前,最初的通信不安全。

 

注入攻击

基本特征:攻击者将不可信的动态内容注入到程序中,并将其执行,改变原执行过程,产生恶意效果。

原则上,提供动态执行能力特性的语言,都需要预防注入攻击。

 

几种常见的注入攻击途径:

SQL注入攻击

典型场景:利用Web系统的用户登录功能,向服务端发送非法内容;
这些内容被服务端“误”拼接到SQL语句中,并被数据库执行。

 

常见应对方法

  • 校验用户输入。如,禁止提交有特殊字符的请求。
  • 生成SQL时使用 PreparedStatement,而不是简单的字符串拼接。
  • 数据库本身对不同的资源和操作使用不同权限控制,拦截恶意注入代码(如,恶意的删除代码)

 

操作系统命令注入

很多语言提供了执行操作系统命令的能力。如,Java中通过Runtime.exec(...)方法执行一段命令。
如果这段命令是来自攻击者的恶意命令,则可能产生恶意效果。

 

XML注入攻击

XML自身可以包含动态内容,如 XPath,如果使用不当,可能导致访问恶意内容。

 

其它

一些允许动态内容的协议,如 LDAP,可能被攻击者利用,通过特定命令,构造注入攻击。 动态页面中的XSS(Cross-site Scripting)攻击等。

 

  • 大小: 58.2 KB
分享到:
评论

相关推荐

    计算机后端-Java-Java核心基础-第20章 多线程 14. 同步机制的课后练习.avi

    计算机后端-Java-Java核心基础-第20章 多线程 14. 同步机制的课后练习.avi

    计算机后端-Java-Java核心基础-第21章 常用类 02. 复习:生命周期与同步机制.avi

    计算机后端-Java-Java核心基础-第21章 常用类 02. 复习:生命周期与同步机制.avi

    java--基础程序知识.rar

    这份“java--基础程序知识.rar”压缩包显然包含了关于Java基础知识的学习资料,旨在帮助初学者或有经验的开发者巩固和深化Java编程技能。下面将详细讨论Java的基础知识,包括其语法、核心概念以及常见应用。 1. **...

    Java核心技术-卷1(基础知识-原书第10版)

    《Java核心技术-卷1(基础知识-原书第10版)》是一本深入浅出的Java编程指南,专为Java编程爱好者和初学者设计。这本书详细介绍了Java语言的基础概念和核心特性,帮助读者掌握Java编程的基本技能。以下是该书涵盖的...

    Java技术教程--基础篇

    本教程“Java技术教程--基础篇”旨在为初学者提供一个全面的Java学习平台,帮助他们掌握Java编程的基础概念和技能。教程内容涵盖Java的核心特性,包括图形用户界面(GUI)、线程管理和网络通信。 首先,我们来深入...

    fabric-java-sdk-demo.zip

    在Fabric网络中,通道是实现隐私和隔离的核心机制。通过`fabric-java-sdk`,开发者可以编写代码来创建新的通道,定义参与节点,设置通道配置文件,最终生成并广播通道创世区块。这一过程涉及到了对`Channel`类的使用...

    aliyun-java-vod-upload-1.4.14

    7. **安全机制**:阿里云Java VOD上传组件可能包含安全机制,如签名验证,确保只有授权的用户才能访问和操作VOD服务。 8. **分发与播放**:SDK还可能包含视频分发和播放相关的配置和接口,如CDN加速,自定义播放器...

    Java核心技术-基础知识(第8版)

    根据提供的信息,“Java核心技术-基础知识(第8版)”这本书主要关注于Java编程语言的基础知识,适合初学者以及希望深入理解Java核心概念和技术的开发者。尽管给出的部分内容仅是一串数字,无法直接从中提取具体的知识...

    大学课程讲义-Java基础-反射.pptx

    Java基础-反射机制详解 本文将详细介绍Java基础中的反射机制,包括Class类、ClassLoader类、Constructor、Method、Field类的用法,以及动态代理机制。 Class类 Class类是Java中一个特殊的类,用于描述类本身的...

    JAVA核心技术.pdf

    JAVA核心技术 JAVA是由Sun Microsystems(现在隶属于Oracle Corporation)开发的一种静态类型、基于类的、面向对象的...通过学习Java核心技术,可以帮助开发者提高Java编程技能,编写更加高效、可靠和安全的Java程序。

    JAVA核心技术--高级特征(第八版)--第三部分

    《JAVA核心技术--高级特征(第八版)--第三部分》是一本深入探讨Java编程高级特性的权威指南,涵盖了Java语言的精髓和最新发展。本书分为四部分,确保全面且系统地讲解了Java开发中的关键知识点,而这里我们将聚焦于第...

    Java编程课程-Java核心基础

    【Java编程课程-Java核心基础】是一门全面深入讲解Java编程语言的教程,旨在帮助初学者从零开始掌握Java核心技术。这门课程涵盖了尚学堂的Java入门内容,适合没有任何编程经验的人士学习,逐步建立起对Java编程的...

    java基础---PPT讲稿.zip

    这份"java基础---PPT讲稿.zip"压缩包包含了对Java基础知识的深入讲解,旨在帮助学习者掌握Java的核心概念,为更高级的学习阶段打下坚实的基础。 在PPT中,我们可能会涵盖以下几个关键知识点: 1. **Java简介**:...

    java基础-中级-高级-深入·

    通过上述介绍,我们了解了Java从基础到高级的一些核心知识点。这份免费开源的学习资源非常适合初学者和有一定基础的开发者深入了解Java编程语言。无论是为了职业发展还是个人兴趣,掌握这些知识都将大有裨益。希望每...

    Java核心技术 卷1 基础知识 原书第10版 ,凯 S.霍斯特曼

    《Java核心技术 卷1 基础知识》是Java编程领域的经典著作,由著名程序员教育家凯·S·霍斯特曼撰写。这本书的第10版在2016年9月出版,提供了全面而深入的Java编程基础知识,是学习Java语言的必备参考书之一。在第711...

    java基础--微学院

    Java基础是编程世界中至关重要的一环,尤其对于初学者来说,掌握好Java基础知识将为后续的深入学习和开发工作奠定坚实的基础。"java基础--微学院"这个资源显然是为了帮助初学者系统地学习Java编程而设计的。让我们来...

    Java核心技术-基础知识(第8版)全本

    以上只是对"Java核心技术-基础知识(第8版)"部分核心内容的概述,实际书籍会提供更详尽的解释和示例代码,帮助读者深入理解并熟练掌握Java编程。通过阅读和实践,开发者可以构建坚实的技术基础,应对各种复杂的开发...

    Java核心技术------源代码

    "Java核心技术------源代码"这个标题暗示了我们将探讨Java编程的基础和核心概念,通过实际的源代码来深入理解其工作原理。描述中的“几十个实例”表明这是一份丰富的学习资源,旨在通过实践来辅助学习者提升技能。 ...

    JAVA程序员必读--基础篇

    "JAVA程序员必读--基础篇"这个资料包显然是为了帮助那些想要深入理解Java的人准备的,它涵盖了Java语言的核心概念和基本用法。 首先,让我们了解一下Java的基础知识。Java是一种面向对象的编程语言,由Sun ...

    java基础教程----精华版

    Java是一种广泛使用的面向对象的编程语言,以其平台独立性、安全性、健壮性和高性能而闻名。这个"java基础教程----精华版"显然是一份精心整理的资料,旨在帮助初学者快速掌握Java编程的基础知识。下面将详细介绍Java...

Global site tag (gtag.js) - Google Analytics