《Java编码指南:编写安全可靠程序的75条建议》—— 导读

简介: 本书为Java程序员提供了具体的建议。这些Java编码指南的应用将会带来更健壮、更能抵御攻击的系统。这些编码指南覆盖范围广泛,适用于大多数基于Java编写的运行在不同设备上的产品,这些设备包括电脑、游戏机、手机、平板电脑、家用电器和汽车电子设备。

b9a719d12fa70d6b289aeb3e652b2297b154e111

前言

本书为Java程序员提供了具体的建议。这些Java编码指南的应用将会带来更健壮、更能抵御攻击的系统。这些编码指南覆盖范围广泛,适用于大多数基于Java编写的运行在不同设备上的产品,这些设备包括电脑、游戏机、手机、平板电脑、家用电器和汽车电子设备。

不管是哪一门编程语言,开发人员在控制程序结构时都应遵守一系列基于该语言特定规则的指南。Java程序员也理应如此。

为了编写安全可靠的Java程序,Java程序员需要很多的帮助,单凭Java语言规范(Java Language Specification,JLS)[JLS 2013]是远远不够的。由于Java包含的许多语言特性和API很容易被误用,因此需要一些必要的避免这些陷阱的指导。

对于一个程序来说,可靠意味着在所有场景或所有可能输入条件下均能正常工作。不可避免的是,任何重要的程序都会遇到一些完全意想不到的输入或场景,从而发生错误。当此类错误发生时,最重要的是它产生的影响必须是有限的,而这可以通过快速定位错误并尽快处理它来实现。预期不寻常的输入或编程场景,并采用防御式编程方式,程序员会受益良多。

其中一些指南可能被认为是一种编码风格,但对于代码的可读性和可维护性来说,它们仍然很重要。针对Java语言,Oracle公司提供了一组编码约定[Conventions 2009]来帮助程序员编写具有一致编程风格的代码,这些约定已经被Java程序员广泛采用。

目录

第1章 安全
指南1:限制敏感数据的生命周期
指南2:不要在客户端存储未经加密的敏感数据
指南3:为敏感可变类提供不可修改的包装器
指南4:确保安全敏感方法被调用时参数经过验证
指南5:防止任意文件上传
指南6:正确地编码或转义输出
指南7:防止代码注入
指南8:防止XPath注入
指南9:防止LDAP注入
指南10:不要使用clone()方法来复制不可信的方法参数
指南11:不要使用Object.equals()来比较密钥
指南12:不要使用不安全的弱加密算法
指南13:使用散列函数存储密码
指南14:确保SecureRandom正确地选择随机数种子
指南15:不要依赖可以被不可信代码覆盖的方法
指南16:避免授予过多特权
指南17:最小化特权代码
指南18:不要将使用降低安全性检查的方法暴露给不可信代码
指南19:对细粒度的安全定义自定义安全权限
指南20:使用安全管理器创建一个安全的沙盒
指南21:不要让不可信代码误用回调方法的特权

第2章 防御式编程

第3章 可靠性

第4章 程序的可理解性

第5章 程序员的常见误解

相关文章
|
1月前
|
Java
java程序导出堆文件
java程序导出堆文件
|
1月前
|
SQL Oracle Java
sql文件批处理程序-java桌面应用
sql文件批处理程序-java桌面应用
25 0
|
1月前
|
存储 Java
Java:编写程序,计算两个数的和、差、积、商和余数。docx
Java:编写程序,计算两个数的和、差、积、商和余数。docx
|
1月前
|
安全 Java 数据库连接
【Java每日一题】——第四十一题:编写程序描述影视歌三栖艺人。
【Java每日一题】——第四十一题:编写程序描述影视歌三栖艺人。
24 0
|
6天前
|
Java Maven
【Java报错】显示错误“Error:java: 程序包org.springframework.boot不存在“
【Java报错】显示错误“Error:java: 程序包org.springframework.boot不存在“
30 3
|
5天前
|
Java API
编码的奇迹:Java 21引入有序集合,数据结构再进化
编码的奇迹:Java 21引入有序集合,数据结构再进化
13 0
|
5天前
|
Java Shell
Java 21颠覆传统:未命名类与实例Main方法的编码变革
Java 21颠覆传统:未命名类与实例Main方法的编码变革
10 0
|
21天前
|
Java
elasticsearch使用java程序添加删除修改
elasticsearch使用java程序添加删除修改
9 0
|
28天前
|
Java
java程序
re是java运行时的环境,包含jvm和运行时所需要的类库 jdk是java开的程序包,包含jre和开发人员使用的工具 jvm就是我们常说的java虚拟机,他是整个java实现跨平台的最核心 的部分,所有的java程序会首先被编译为.class的类文件,这种类文 件可以在虚拟机上执行。也就是说class并不直接与机器的操作系统 相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释 给本地系统执行。 只有jvm还不能成class的执行,因为再解释class的时候jvm需要调用 解释所需要的类库lib,而jre包含lib类库。jvm屏蔽了与具体操作系 统平台相关的信息,使得java程
16 0
|
1月前
|
安全 Java 数据库连接
【Java每日一题】——第四十二题:编写程序实现乐手弹奏乐器。乐手可以弹奏不同的乐器从而发出不同的声音。可以弹奏的乐器包括二胡、钢琴和琵琶。
【Java每日一题】——第四十二题:编写程序实现乐手弹奏乐器。乐手可以弹奏不同的乐器从而发出不同的声音。可以弹奏的乐器包括二胡、钢琴和琵琶。
58 0