|
java自学网(www.javazx.com)-java论坛,java电子书推荐:《Java编码指南 编写安全可靠程序的75条建议 X! c" O6 w4 m# H8 p
》; m3 c" G! M6 T. a6 ^: a
java电子书推荐理由:Java之父James A.Gosling作序推荐 Java领域安全编码的倾情著作,本书体现了Java安全领域的全新研究成果,提供了很多全新的防护技巧,既能防护故意的攻击,也能防护一些意外导致的事件。书中把那些不必列入Java安全编码标准但是同样会导致系统不可靠或不安全的Java编码实践整理了出来,并为这些糟糕的实践提供了相应的文档和警告,以及合规解决方案。为读者提供了75条编码指南,每一条指南的描述结构都是一致的、直观的。1 n+ F( e* H$ j4 [
5 H y/ l4 R% d% H/ h2 p
3 B- W8 h7 \6 L3 Q5 E( z( [作者:[美]弗雷德·朗(Fred Long)德鲁·莫欣达(Dhruv Mohindra 著! t) O+ S" R1 J7 O
出版社:人民邮电出版社
/ x( K- G9 A r+ q. U$ q出版时间:2015-12-01# v& I0 u& s0 i" I: a
% D N8 p" W [! M" Q& z7 a& s6 `
. h* y3 C* Q* Y& k, q5 [) O
, X+ W$ J6 U% S# b6 m
java电子书目录:0 \ s/ p2 l) b: H: c
# u( i4 ? G5 S( h第1章 安全 1
/ B; D- M8 R5 M/ v指南1:限制敏感数据的生命周期 1* p+ c9 C& t. O3 q$ ^
指南2:不要在客户端存储未经加密的敏感数据 5
3 }$ z( n- f" ~指南3:为敏感可变类提供不可修改的包装器 10
! k5 T, p) m# B! f& s指南4:确保安全敏感方法被调用时参数经过验证 12
6 D( x* X3 ~$ z& K3 |' l6 D' @指南5:防止任意文件上传 14
) m6 r; ^* Q& a) G指南6:正确地编码或转义输出 17' {/ q2 u% z$ w0 X6 [. J! J% X
指南7:防止代码注入 226 T H/ R& @% P: {" k5 Q, P8 _" T3 F8 h0 j
指南8:防止XPath注入 25 ?0 J s2 w$ ]/ f I; N+ |
指南9:防止LDAP注入 30; {0 R2 a0 \4 N" s& _$ B# E
指南10:不要使用clone()方法来复制不可信的方法参数 34( v6 ~1 @0 x; C" B
指南11:不要使用Object.equals()来比较密钥 37
5 ~ ]# W$ i5 M% D k$ B% x6 u指南12:不要使用不安全的弱加密算法 39' z3 R6 K ^: _, c9 J: [
指南13:使用散列函数存储密码 410 i* j0 k1 M' @* c3 D
指南14:确保SecureRandom正确地选择随机数种子 468 I* y6 c7 B" k7 c" E
指南15:不要依赖可以被不可信代码覆盖的方法 47- |$ Q1 ]$ \3 W, ]& O
指南16:避免授予过多特权 55+ H5 d( P1 M% @4 B' b% M" [" y
指南17:小化特权代码 599 l3 K; g- ^* x2 F7 k. J4 E
指南18:不要将使用降低安全性检查的方法暴露给不可信代码 61: N$ M, [% i/ s3 M
指南19:对细粒度的安全定义自定义安全权限 70" b2 s; T8 _: p# n4 ]' t; ^
指南20:使用安全管理器创建一个安全的沙盒 74
" A+ k9 h4 r$ I' N指南21:不要让不可信代码误用回调方法的特权 78& P; N+ f4 K( i
第2章 防御式编程 85
2 W: A/ `* p. A+ B7 Q! h5 Y ^指南22:*小化变量的作用域 85( V5 I% z# P4 R9 q7 Z! v m3 L
指南23:*小化@SuppressWarnings注解的作用域 88
9 Y) {) }0 H" ^; O7 P; N; Z指南24:*小化类及其成员的可访问性 91) m7 f% s; W# z. U( V7 r+ t) ?. Y
指南25:文档化代码的线程安全性 96
3 u* }2 F( v2 d指南26:为方法的结果值提供反馈 103$ c4 x! J: _# y+ N& ]0 D
指南27:使用多个文件属性识别文件 106; O4 s6 _( i6 _1 n
指南28:不要赋予枚举常量的序号任何特殊意义 114
* T0 \+ F! P N* K指南29:注意数字提升行为 116
) }, S$ M+ ~' [/ a3 |" x* s: Y' a. @指南30:对可变参数的类型做编译时类型检查 121
4 |) D8 D* q+ l( o指南31:不要把其值在以后版本里可能会发生变化的常量设置为public final 124" r/ n( A( i! x6 t9 }0 ?- ~* ?& K
指南32:避免包之间的循环依赖 127$ Y3 M( A5 A, G3 @+ ~) v9 ~
指南33:使用用户自定义的异常而非宽泛的异常类型 130# B. L: X( K/ u) L* c: H
指南34:尽量从系统错误中优雅恢复 133
0 s5 { m! V/ h; }1 w1 W) Z指南35:发布接口前请谨慎设计 135% A2 e$ v' C" p3 i
指南36:编写对垃圾收集机制友好的代码 138
' B5 r5 c3 S0 B N3 T第3章 可靠性 142. i+ P1 q2 f( Q5 c$ _. ]
指南37:不要在子作用域里遮蔽或者掩盖标识符 142
$ _9 L/ G9 _4 U9 Z指南38:不要在一个声明里声明多个变量 145
( q% e# O. d8 i+ J. L, t9 E' H指南39:在程序逻辑中用有意义的符号常量代表文字值 148. R- c! G6 U/ L3 ~& B9 d
指南40:在常量定义中恰当地表示相互之间的关系 153# l6 a! b/ _" O- m8 N
指南41:对于返回数组或者集合的方法,用返回一个空数组或者集合来替代返回一个空值 154
: F4 {: q8 A" X( o! J) p4 z指南42:只在异常的情况下使用异常 157) f1 @* h. k' W- H
指南43:转义 245. ]& u. v, b J1 @3 ?3 s
指南72:不要使用重载的方法来区分运行时类型 248
# }! k8 l, s' @2 f+ I指南73:不要弄混引用的不可变性和对象的不可变性 251- E$ F, S# ~4 u4 u% Q
指南74:谨慎使用序列化方法writeUnshared()和readUnshared() 257! k) W; | q* y- f: D; {
指南75:不要试图通过把* x+ h6 ?; X) A" U& w ~
# Z7 F% V4 L: _/ `
百度网盘下载地址链接(百度云)下载地址:Java编码指南 PDF 电子书% X1 b k$ R9 K
) \2 b" A% \* P
& C. W* S0 e/ I1 X# i( F' n- O
7 r, x, l7 N# L, R
|
|