《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章 程序员的常见误解

相关文章
|
3月前
|
Java
Java开发实现图片URL地址检验,如何编码?
【10月更文挑战第14天】Java开发实现图片URL地址检验,如何编码?
100 4
|
3月前
|
Java 流计算
利用java8 的 CompletableFuture 优化 Flink 程序
本文探讨了Flink使用avatorscript脚本语言时遇到的性能瓶颈,并通过CompletableFuture优化代码,显著提升了Flink的QPS。文中详细介绍了avatorscript的使用方法,包括自定义函数、从Map中取值、使用Java工具类及AviatorScript函数等,帮助读者更好地理解和应用avatorscript。
利用java8 的 CompletableFuture 优化 Flink 程序
|
3月前
|
Java
Java实现随机生成某个省某个市的身份证号?如何编码?
【10月更文挑战第18天】Java实现随机生成某个省某个市的身份证号?如何编码?
188 5
|
3月前
|
Java
Java开发实现图片地址检验,如果无法找到资源则使用默认图片,如何编码?
【10月更文挑战第14天】Java开发实现图片地址检验,如果无法找到资源则使用默认图片,如何编码?
72 2
|
1天前
|
自然语言处理 Java
Java中的字符集编码入门-增补字符(转载)
本文探讨Java对Unicode的支持及其发展历程。文章详细解析了Unicode字符集的结构,包括基本多语言面(BMP)和增补字符的表示方法,以及UTF-16编码中surrogate pair的使用。同时介绍了代码点和代码单元的概念,并解释了UTF-8的编码规则及其兼容性。
73 60
|
2月前
|
IDE Java 编译器
开发 Java 程序一定要安装 JDK 吗
开发Java程序通常需要安装JDK(Java Development Kit),因为它包含了编译、运行和调试Java程序所需的各种工具和环境。不过,某些集成开发环境(IDE)可能内置了JDK,或可使用在线Java编辑器,无需单独安装。
83 1
|
3月前
|
存储 缓存 Java
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
这篇文章详细介绍了Java中的IO流,包括字符与字节的概念、编码格式、File类的使用、IO流的分类和原理,以及通过代码示例展示了各种流的应用,如节点流、处理流、缓存流、转换流、对象流和随机访问文件流。同时,还探讨了IDEA中设置项目编码格式的方法,以及如何处理序列化和反序列化问题。
95 1
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
|
2月前
|
SQL 安全 Java
Java 异常处理:筑牢程序稳定性的 “安全网”
本文深入探讨Java异常处理,涵盖异常的基础分类、处理机制及最佳实践。从`Error`与`Exception`的区分,到`try-catch-finally`和`throws`的运用,再到自定义异常的设计,全面解析如何有效管理程序中的异常情况,提升代码的健壮性和可维护性。通过实例代码,帮助开发者掌握异常处理技巧,确保程序稳定运行。
46 0
|
3月前
|
Java Maven 数据安全/隐私保护
如何实现Java打包程序的加密代码混淆,避免被反编译?
【10月更文挑战第15天】如何实现Java打包程序的加密代码混淆,避免被反编译?
319 2
|
3月前
|
安全 Java Linux
java程序设置开机自启
java程序设置开机自启
173 1