任何可以用来绕过系统安全策略限制的缺陷都是安全漏洞。
构建安全可靠的服务需要通过整体性的安全设计和综合性的防范手段。
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)攻击等。
相关推荐
计算机后端-Java-Java核心基础-第20章 多线程 14. 同步机制的课后练习.avi
计算机后端-Java-Java核心基础-第21章 常用类 02. 复习:生命周期与同步机制.avi
深入Java核心_探秘Java垃圾回收机制 深入Java核心_探秘Java垃圾回收机制
2002_RocketMQ_核心概念详解 3003_RocketMQ_集群构建模型详解(一) 4004_RocketMQ_集群构建模型详解(二) 5005_RocketMQ_双主模式集群环境搭建 6006_RocketMQ_控制台使用讲解 7007_RocketMQ_Broker配置文件详解 ...
大数据必学Java基础(二):Java核心机制
深入Java核心 Java中多态的实现机制
Java中类和对象的定义; Java对OOP三个主要特性——封装、继承和多态的支持机制; Java中的对象数组这种数据结构
java.lang 提供利用 Java 编程语言进行程序设计的基础类。 java.lang.annotation 为 Java 编程语言注释设施提供库支持。 java.lang.instrument 提供允许 Java 编程语言代理检测运行在 JVM 上的程序的服务。 java....
java反射机制核心代码,小弟一直弄不明白,怎么通过反射来调用私有成员方法,看了这个后,你可以随心调用private方法,和属性,记得添加setAccessable(true),哦,要不还是不行,如:method.setAccessable(true);
Java核心技术 卷Ⅰ:基础知识 【中文】 第1章概述Java与其他程序设计语言不同的性能。解释这种语言的设计初衷,以及在哪些方 面达到了预期的效果。然后,简要叙述Java诞生和发展的历史。 第2章详细地论述如何下载和...
JAVA 技术发展的历程 JAVA 技术的特点 JAVA的三种核心机制 第一个JAVA程序 JAVA设计的注释 关于JDK
通过面试题的逐一解答,读者可以了解到Java语言的一些核心概念,如面向对象的特性、线程安全、性能优化、泛型、自动装箱与拆箱等。此外,文件还详细解释了类型擦除的概念及其优势,以及深浅克隆的区别和实现方式。...
javasyntax.zip 05.Java核心语法详解 javaoop.zip 06.Java面向对象编程(计算器) javaexception.zip 07.Java面向对象编程扩展(计算器异常捕捉实例) 第3部分(5个程序包) javaio.zip 09.Java输入/输出流 ...
2002_RocketMQ_核心概念详解[免费观看]36:44 3003_RocketMQ_集群构建模型详解(一)27:47 4004_RocketMQ_集群构建模型详解(二)23:36 5005_RocketMQ_双主模式集群环境搭建39:05 6006_RocketMQ_控制台使用讲解10:41)...
Java的跨平台性和内存管理机制 Java的异常处理机制 一个简单的Java示例代码 学到什么 通过阅读本文,您将学习到以下内容: Java语言的基本特性和常见用法 面向对象编程的核心概念 如何编写和运行简单的Java程序 ...
jvm内存分区,gc算法,类加载机制。并发编程,并发编程各大容器,锁。框架spring mybatis原理,组件介绍。架构设计有设计模式,负载均衡。网络有协议,java 高并发io框架netty。数据结构包括堆栈,队列,链表,...
一共四页, 用图形文字简明扼要地介绍Jdk 6有关系统并行性的一些特性。 能让Java的学习者快速了解Java对并发机制的支持。 是一本难得的好书。
基于JAVA的安全电子商务系统是一个集成了多种安全机制的在线交易平台。该系统采用先进的Java技术,结合当下流行的Spring、Hibernate等框架,构建了一个稳定、高效、安全的电子商务环境。 该系统的核心功能包括用户...