|
java自学网(www.javazx.com)-java论坛,java电子书推荐:《Java编码指南 编写安全可靠程序的75条建议8 R8 e/ I8 w; @! |5 ]: }
》2 P1 E+ x+ V; }6 \4 M9 q/ H3 A1 u
java电子书推荐理由:Java之父James A.Gosling作序推荐 Java领域安全编码的倾情著作,本书体现了Java安全领域的全新研究成果,提供了很多全新的防护技巧,既能防护故意的攻击,也能防护一些意外导致的事件。书中把那些不必列入Java安全编码标准但是同样会导致系统不可靠或不安全的Java编码实践整理了出来,并为这些糟糕的实践提供了相应的文档和警告,以及合规解决方案。为读者提供了75条编码指南,每一条指南的描述结构都是一致的、直观的。% h, N3 h4 N8 Z7 J$ m$ z& B
" f; n9 k5 w( E) {
7 H. I4 t% j0 _# r+ u
作者:[美]弗雷德·朗(Fred Long)德鲁·莫欣达(Dhruv Mohindra 著$ Z9 W% I; o: Y% B Y
出版社:人民邮电出版社7 Q9 N* a. x; R: x- u
出版时间:2015-12-01' |( D0 K' c8 ^! G, a1 w0 s" Q
8 g7 v0 J4 ]% M+ }9 E1 T7 v
9 R+ e; c: t7 `/ f7 _$ g; O+ J3 y3 d$ F2 ?$ }
java电子书目录:) M6 B+ W% j% t( A$ D( [: V
8 y6 Y+ k& ?9 r) A+ i9 ^第1章 安全 13 j* O& @1 b- [9 x$ I
指南1:限制敏感数据的生命周期 1
7 O& T6 Q( v s" g6 Z指南2:不要在客户端存储未经加密的敏感数据 5
4 G) q# C5 c% N* k2 o指南3:为敏感可变类提供不可修改的包装器 102 G1 a& ?. f% c2 V' w
指南4:确保安全敏感方法被调用时参数经过验证 12
q! l- C* Y0 x3 ^6 W: M; ^+ h5 q指南5:防止任意文件上传 14
7 Z e7 p- G2 `( n0 a0 `指南6:正确地编码或转义输出 17
( c% K- N7 O/ d5 N指南7:防止代码注入 22, ^' K! {" ^ {
指南8:防止XPath注入 25
0 d# ^4 r9 V3 V: A& X6 R6 @指南9:防止LDAP注入 30- b% m" s {" J1 W, p# V$ E
指南10:不要使用clone()方法来复制不可信的方法参数 34
/ g4 ]0 |/ N2 e: T+ C" i指南11:不要使用Object.equals()来比较密钥 37
4 I& t/ ]. o( ^8 o7 c% S, n% u! o指南12:不要使用不安全的弱加密算法 39
7 p. O4 P+ @6 M; D* Q- Y: Q+ ]) o指南13:使用散列函数存储密码 41
( z7 w! V6 ~1 ~ i指南14:确保SecureRandom正确地选择随机数种子 469 E. Y+ E3 y0 _8 ~
指南15:不要依赖可以被不可信代码覆盖的方法 478 W4 F! ]. R/ ]) c
指南16:避免授予过多特权 557 ]/ O0 V5 y& j d
指南17:小化特权代码 596 T/ b# s. s9 w8 D8 \/ \& u
指南18:不要将使用降低安全性检查的方法暴露给不可信代码 61' B' R9 @. q9 z1 c: ?
指南19:对细粒度的安全定义自定义安全权限 706 v5 D5 g I! y7 A$ q9 D0 i
指南20:使用安全管理器创建一个安全的沙盒 74
+ u' K; q1 E# y" ^% J. T指南21:不要让不可信代码误用回调方法的特权 78
. D. R+ }4 r1 `: f& E第2章 防御式编程 85 C! g7 j$ v, ?) g [+ |% _
指南22:*小化变量的作用域 859 E4 j% ?. P5 x; _" y
指南23:*小化@SuppressWarnings注解的作用域 885 L' ?( y6 y, P2 g6 w
指南24:*小化类及其成员的可访问性 91& l& N8 k5 F: A/ x* ~4 B. `0 u3 g
指南25:文档化代码的线程安全性 96
. D& v4 ]" n/ V& g指南26:为方法的结果值提供反馈 103
! i/ h0 F2 ~# |2 |指南27:使用多个文件属性识别文件 106) w; o( f$ h( G' u! o
指南28:不要赋予枚举常量的序号任何特殊意义 114
. s+ o, j% D0 \+ t% l% j指南29:注意数字提升行为 1164 l) \# }# U, T# k- H* u6 r; b
指南30:对可变参数的类型做编译时类型检查 121
0 v! K0 C; J) c* A/ j" O指南31:不要把其值在以后版本里可能会发生变化的常量设置为public final 124
" i0 o1 M: G$ V7 i% {# z! g( T" d- ?指南32:避免包之间的循环依赖 127
" K* v3 X) b5 A& `9 b指南33:使用用户自定义的异常而非宽泛的异常类型 130
0 u; ^, ^) H0 ]5 ^$ s指南34:尽量从系统错误中优雅恢复 133
" g$ j- J' l; B4 T" f8 x- X: K% q指南35:发布接口前请谨慎设计 135
* @. `6 r+ r7 a3 b6 u指南36:编写对垃圾收集机制友好的代码 138& f ^. Z$ r- v6 n3 G
第3章 可靠性 142
- O1 g1 ~4 {$ l0 C) B7 s指南37:不要在子作用域里遮蔽或者掩盖标识符 142
% t3 H1 K9 f0 N指南38:不要在一个声明里声明多个变量 145
8 B% g! E/ E- T1 t# D指南39:在程序逻辑中用有意义的符号常量代表文字值 148% V' s& j& N, Q
指南40:在常量定义中恰当地表示相互之间的关系 153' N/ n# \; ?/ q/ I$ j- K/ J# H9 w
指南41:对于返回数组或者集合的方法,用返回一个空数组或者集合来替代返回一个空值 154; N; x" P- d0 |! w V; Z% x
指南42:只在异常的情况下使用异常 1573 {4 L1 i% C5 A& I5 J
指南43:转义 245
3 Y6 n/ A H7 B- |1 A指南72:不要使用重载的方法来区分运行时类型 248
" w( d- l( p2 h. ?3 a指南73:不要弄混引用的不可变性和对象的不可变性 251
6 m. J( S8 L. h& h) f z指南74:谨慎使用序列化方法writeUnshared()和readUnshared() 257! U5 a' W" o' z* a: Y
指南75:不要试图通过把
* E m( E+ {+ g( E
+ J$ i/ B( I5 R6 q& q: {0 Y百度网盘下载地址链接(百度云)下载地址:Java编码指南 PDF 电子书9 q5 i* m* w* d E
- X, C% G5 k) E, r! s9 H" L' k3 Q* @& C
1 H7 R% n8 k1 U! V8 Z. d0 {. m0 v" w1 k
|
|