From 9a3c957a7cc00d5447332f8834a34fd807abb539 Mon Sep 17 00:00:00 2001 From: top37 <34263400+top37@users.noreply.github.com> Date: Mon, 19 Aug 2019 18:03:24 +0800 Subject: [PATCH] =?UTF-8?q?Update=2089.=20=E5=AF=B9=E4=BA=8E=E5=AE=9E?= =?UTF-8?q?=E4=BE=8B=E6=8E=A7=E5=88=B6=EF=BC=8C=E6=9E=9A=E4=B8=BE=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E4=BC=98=E4=BA=8E=20readResolve.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 错别字 --- docs/notes/89. 对于实例控制,枚举类型优于 readResolve.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/notes/89. 对于实例控制,枚举类型优于 readResolve.md b/docs/notes/89. 对于实例控制,枚举类型优于 readResolve.md index 9ea9fc7..7607981 100644 --- a/docs/notes/89. 对于实例控制,枚举类型优于 readResolve.md +++ b/docs/notes/89. 对于实例控制,枚举类型优于 readResolve.md @@ -112,7 +112,7 @@ public class ElvisImpersonator {   通过将 `favoriteSongs` 字段声明为 `transient`,可以修复这个问题,但是最好把 `Elvis` 做成一个单元素的枚举类型(详见第 3 条)。就如 `ElvisStealer` 攻击所示范的,用 `readResolve` 方法防止“临时”被反序列化的实例收到攻击者的访问,这种方法十分脆弱需要万分谨慎。 -  如果将一个可序列化的实例受控的类编写为枚举,Java 就可以绝对保证出了所声明的常量之外,不会有其他实例,除非攻击者恶意的使用了享受特权的方法。如 `AccessibleObject.setAccessible`。能够做到这一点的任何一位攻击者,已经拥有了足够的特权来执行任意的本地代码,后果不堪设想。将 Elvis 写成枚举的例子如下所示: +  如果将一个可序列化的实例受控的类编写为枚举,Java 就可以绝对保证除了所声明的常量之外,不会有其他实例,除非攻击者恶意的使用了享受特权的方法。如 `AccessibleObject.setAccessible`。能够做到这一点的任何一位攻击者,已经拥有了足够的特权来执行任意的本地代码,后果不堪设想。将 Elvis 写成枚举的例子如下所示: ```java // Enum singleton - the preferred approach public enum Elvis {