|
java自学网(www.javazx.com)-java论坛,java电子书推荐:《Java编码指南 编写安全可靠程序的75条建议
$ b+ W- }. [6 J. U' P* Z' q》% ^8 V* O7 N. X+ n- w7 p5 s
java电子书推荐理由:Java之父James A.Gosling作序推荐 Java领域安全编码的倾情著作,本书体现了Java安全领域的全新研究成果,提供了很多全新的防护技巧,既能防护故意的攻击,也能防护一些意外导致的事件。书中把那些不必列入Java安全编码标准但是同样会导致系统不可靠或不安全的Java编码实践整理了出来,并为这些糟糕的实践提供了相应的文档和警告,以及合规解决方案。为读者提供了75条编码指南,每一条指南的描述结构都是一致的、直观的。8 h8 t" m: C* k2 t! r' h* W j1 k
; J5 U# o N' T. c) N6 |! N9 o: F' Z
8 L* J. a/ M6 q( u3 Y C
作者:[美]弗雷德·朗(Fred Long)德鲁·莫欣达(Dhruv Mohindra 著& a, R7 r+ `6 ]( S' |+ z* ^
出版社:人民邮电出版社; t" C! Y* B/ B: v
出版时间:2015-12-01
" T5 t, h- o9 S" q/ p$ e9 [) y* b& x* \6 m7 J, Z
8 |# l& S+ v, E: H. H n
5 n( _" ~/ f4 n6 djava电子书目录:
# R6 e( v4 S: L) R) V) n
! v5 V- V5 s9 w. Y第1章 安全 1
) ~1 j$ Q8 V1 d0 s9 F% x指南1:限制敏感数据的生命周期 1
( w' t+ g* S% K* h. p! j* \ l指南2:不要在客户端存储未经加密的敏感数据 5
1 h- \" V+ w8 x9 E5 w* o* E S指南3:为敏感可变类提供不可修改的包装器 10
% F0 X6 b; [# n' d指南4:确保安全敏感方法被调用时参数经过验证 12# h* f7 m+ q3 n9 z, l5 f9 w
指南5:防止任意文件上传 14
4 k2 y0 ~+ q1 P1 i7 q1 @% `指南6:正确地编码或转义输出 17
1 g2 g: N) x& r* H指南7:防止代码注入 22
- \6 U w; {* M) D指南8:防止XPath注入 25* \# v& q6 J6 \
指南9:防止LDAP注入 30
' m i4 X( a; U3 [# f; |9 n3 e2 t指南10:不要使用clone()方法来复制不可信的方法参数 34
; x& n( @6 o2 O$ b: M, T3 W指南11:不要使用Object.equals()来比较密钥 37 z2 U7 I Y) s1 R4 w/ X5 d+ \
指南12:不要使用不安全的弱加密算法 39) W. F" e) U0 u0 d2 Q; u# q( m
指南13:使用散列函数存储密码 41
c8 q# x! k w( ?! B. Y指南14:确保SecureRandom正确地选择随机数种子 46; }! U6 J5 e7 o) B$ c+ ?6 j/ j8 D6 ^
指南15:不要依赖可以被不可信代码覆盖的方法 47# j, w" i9 ^0 M
指南16:避免授予过多特权 558 t1 G. ?* M# E
指南17:小化特权代码 59
2 D( [* L' o8 V$ E0 G/ _指南18:不要将使用降低安全性检查的方法暴露给不可信代码 61- ~6 p% v. U) @1 P) |( R& X
指南19:对细粒度的安全定义自定义安全权限 709 v* E+ ~8 N4 C$ x* o6 Y6 b8 N
指南20:使用安全管理器创建一个安全的沙盒 74
5 X3 r. \+ n' J; _. Z6 r指南21:不要让不可信代码误用回调方法的特权 78! r, n, D& S3 {: Z" S* W- o
第2章 防御式编程 851 W, E! T# f5 s
指南22:*小化变量的作用域 85" O5 X- N3 b) [( h; h& y
指南23:*小化@SuppressWarnings注解的作用域 88# _2 ?% Q2 [) I4 |
指南24:*小化类及其成员的可访问性 91
7 X# o( O9 N; V$ G1 H/ D) |指南25:文档化代码的线程安全性 96( R& Z$ a4 M* E9 c O
指南26:为方法的结果值提供反馈 1032 \5 K T% n. m* E5 ~% m4 B
指南27:使用多个文件属性识别文件 106
1 X+ c( J- ]% F8 W$ B- @指南28:不要赋予枚举常量的序号任何特殊意义 1146 T4 i! J; y/ G6 L
指南29:注意数字提升行为 116
9 n) {2 Y; ~, w- [指南30:对可变参数的类型做编译时类型检查 1215 F( Y4 [1 G" x% g# I
指南31:不要把其值在以后版本里可能会发生变化的常量设置为public final 124
$ A x" m6 s% \# [: @指南32:避免包之间的循环依赖 127
( x- f' `& M% n' i7 {指南33:使用用户自定义的异常而非宽泛的异常类型 130
4 z5 x; }+ n- F3 V# B: _ n指南34:尽量从系统错误中优雅恢复 133
$ B5 v# @% Y+ A1 q指南35:发布接口前请谨慎设计 135
# g! ?0 W1 I% _# a5 m指南36:编写对垃圾收集机制友好的代码 138
/ K* h5 r8 j3 u( n第3章 可靠性 142
7 {; `1 @" F+ d" E8 f0 V指南37:不要在子作用域里遮蔽或者掩盖标识符 142: i2 a) D2 ~0 h
指南38:不要在一个声明里声明多个变量 1456 x0 o8 s' M! E
指南39:在程序逻辑中用有意义的符号常量代表文字值 148
4 [9 R% X- J4 C指南40:在常量定义中恰当地表示相互之间的关系 153( B1 H1 W. `4 V$ [) P3 m6 s% A
指南41:对于返回数组或者集合的方法,用返回一个空数组或者集合来替代返回一个空值 154
+ I1 O& ^2 R$ {$ i4 P% m指南42:只在异常的情况下使用异常 157
: G! r6 M+ h+ ~4 Q+ x1 r0 \9 D5 N指南43:转义 245
. F! i% I/ ~; j+ ~1 X. \2 Z指南72:不要使用重载的方法来区分运行时类型 2481 m0 u7 D3 _: I( Z- t
指南73:不要弄混引用的不可变性和对象的不可变性 251
8 b, F5 i7 u7 A v0 ^2 s% e指南74:谨慎使用序列化方法writeUnshared()和readUnshared() 2574 I. _: V) |0 K& J
指南75:不要试图通过把
- S# l' u) z. I5 r2 x; ~' R2 p3 M9 D$ {2 g0 u+ b8 K: x& E* l% }9 K
百度网盘下载地址链接(百度云)下载地址:Java编码指南 PDF 电子书3 R8 f( e8 a( k: Y6 F3 I& [: R1 l* l
7 R. H: g9 a6 z5 R
) b) T* H* g( [
& H3 g- b3 C; N5 U |
|