`
bingooh
  • 浏览: 52838 次
  • 性别: Icon_minigender_1
  • 来自: 佛山
社区版块
存档分类
最新评论

11.76-11.78 使用序列化

阅读更多

1.覆盖readObject()检查反序列化对象的有效性,以防止安全攻击。readObject()可视为一个隐藏的构造函数。在此方法里不要直接或间接的调用对象的可覆盖的方法(因为执行这些可覆盖的方法时,子类对象的状态可能还未初始化)

注:原书有说明如何使用序列化注入不安全的对象

 

 

2.对于对象控制,优先使用枚举类代替readResolve()方法。比如使用枚举实现单例模式

注:原书有说明如何使用序列化注入不安全的单例对象

 

3.考虑使用序列化代理设计模式(serialization proxy)实现对象序列化。此模式可以有效的避免通过序列化进行安全攻击等问题,缺点是轻微降低性能

 

首选声明序列化代理类,一般声明为静态内部类,如下:

	/** 序列化代理对象 */
	private static class SerializationProxy implements Serializable {
		private final Date start;
		private final Date end;
		
		/**通过构造函数传入被代理的对象*/
		SerializationProxy(Period p) {
			//此处保存被代理对象需要序列化的属性值
			this.start = p.start;
			this.end = p.end;
		}

		/** 反序列化时返回被代理的对象 */
		private Object readResolve() {
			return new Period(start, end);
		}

		private static final long serialVersionUID = 234098243823485285L;
	}

 

被代理对象Period需要覆盖以下方法:

	/** 直接抛出异常,避免使用对象序列化 */
	private void readObject(ObjectInputStream stream)
			throws InvalidObjectException {
		throw new InvalidObjectException("Proxy required");
	}

	/** 序列化时返回代理对象 */
	private Object writeReplace() {
		return new SerializationProxy(this);
	}

 

在序列化时,Period类通过writeReplace()返回代理对象SerializationProxy,即被序列化的实际是SerializationProxy对象。因此反序列化时也是SerializationProxy对象,但是SerializationProxy对象覆盖了readResolve()方法,反序列化时会调用此方法并把返回值作为反序列化结果,最终得到的是Period对象

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    ACE发送代码

    艾丽特 攻击速度-14%-----------命中+11.76% 精锐 攻击速度-14%-----------命中+11.76% 客迈拉 攻击速度-14%-----------命中+10.98% 梦幻 攻击速度-14%-----------命中+10.98% 英雄 攻击速度-14%-----------命中+...

    清华大学计算机系网络课程

    清华大学计算机系网络课程 里面包含 C++语言程序设计 JAVA编程语言 MPI并行程序设计 编程原理 并行计算 多媒体计算机技术基础及应用 ...共11.76GB 是计算机爱好者或计算机系相关人员的必备教程与参考

    莲藕过氧化物酶的分离纯化及性质研究 (2007年)

    该酶纯化倍数为39.77倍,回收率为11.76%。酶学性质和动力学性质研究表明,该酶最适pH为5.0;最适温度为35℃;以不同浓度的过氧化氢与莲藕POD在25℃、pH5的条件下反应,测得其Km值为9mmol/L。CuSO4和ZnSO4对莲藕POD活性有...

    清华大学计算机系网络课程 种子文件

    清华大学计算机系网络课程的种子文件 11.76G,基础知识内容还算全面

    配风量对“U”型工作面瓦斯治理影响的实测分析

    为了探索N1102工作面瓦斯治理与配风量之间的关系,通过试验研究分析,利用增阻调节法对N1102...通过现场观测,N1102工作面风量调整后上隅角最高瓦斯浓度下降了15.24%,后溜瓦斯浓度下降了11.76%,回风流瓦斯浓度下降了1.3%。

    2022年电工杯B题5G 网络环境下应急物资配送问题

    总长度为 588,耗时 11.76,配送路径见正文图 6。 针对问题二,要求在原来车辆配送的基础上增加无人机配送,建立优化模型给出车 辆完成一次整体配送的最优方案。考虑到无人机与车辆的协同路径优化,通过贪心算法 将...

    Analysis_of_Smart_meter_London:伦敦的智能电表读数分析

    动态使用时间计划的设置方式是,提前通知每个家庭其电价将高于或低于正常价格的特定时间-高(67.20p / kWh),低(3.99p / kWh)或正常(11.76p / kWh)。 标准计划全天保持不变的固定费率(14.228p / kWh)。 该...

    基于显微CT巷道围岩孔隙结构试验研究

    矿井巷道围岩的孔隙结构是影响巷道围岩稳定性的一个重要地质因素,在对...结果表明:显微CT为研究巷道围岩的孔隙结构提供了一种新方法,孔隙孔径在1.47~11.76μm时,巷道围岩的孔隙率随着孔隙孔径的增加呈负指数规律减少。

    氟化梯度折射率塑料光纤带宽特性计算 (2013年)

    基于氟化聚合物梯度折射率圆对称塑料光纤(PF-GIPOF)的...理论计算和实验结果表明,200m长的PF-GIPOF在1300nm工作波长下,半径11.76μm的激光斑激励出的传导模最少,由于差分模式损耗作用,系统带宽提升了3.56GHz,在\u03b1=

    连续钛宝石激光器波长调谐特性及斜效率的测量

    使用三套腔镜得到的波长调谐范围分别为680~760 μm、730~840 μm、970~1010 nm,峰值波长约为780 μm。当输出透射率为11.76%、泵浦功率约10.0 W时,获得780 μm波长的激光最大输出功率约2.35 W,斜效率为33.49%。

    固载杂多酸催化剂的轻汽油醚化反应性能研究 (2009年)

    采用不同杂多酸负载于活性炭制成催化剂,并应用于FCC轻汽油醚化反应。...xH2O为活性组分制备的催化剂,对FCC轻汽油醚化反应表现出良好的醚化活性,产物中醚的体积分数可达11.76%,说明其具有一定的应用前景。

    喷射式超重力旋转床的压降研究 (2013年)

    喷射式超重力旋转床是一种...当转速为800 r/min,F因子为1.24 kg0.5/(m0.5・s),喷淋密度为11.76 m3/(m2・h),压降为800 Pa时,回归的气相压降模型表明:气相压降与转速的平方、F因子的平方和液量的负四次方有关.

    Corfucinas:关于我的个人页面

    :package: Github的存储中使用了0字节 :briefcase: 选择雇用 :scroll: 81个公共存储库 :key: 0个私有存储库 我很早 :baby_chick: :sun_with_face: Morning 111 commits ███░░░░░░░░░░░░░░░░...

    六大视频平台对比报告:获客、留存、变现

    根据艺恩数据, 2020H1好评度在60分及以上的网络剧数量占比为31%,同比提升10pcts,网剧精品化趋势加强。视频平台通过增加自制投入 加强对于内容的把控,自制精品内容成为提升平台竞争力的关键。根据艺恩数据,2020...

    寄生蜂和杀虫剂对烟粉虱种群的控制效果 (2004年)

    结果发现在相同放蜂密度(3头/株)下,放蜂2次和放蜂1次,3周后烟粉虱种群增长趋势指数分别为11.76和16.46,干扰作用指数分别为0.424 2和0.593 8,寄生蜂对烟粉虱若虫的寄生率分别达到50.40%和33.88%.喷施高效大...

    KalebeLopes

    你好 :waving_hand: 我是卡莱伯! :) 欢迎来到我的网站! 我编码的东西 :smiling_face_with_halo: 我的Github统计: ...Java 2 repos ███░░░░░░░░░░░░░░░░░░░░░░ 11.76% C

    稻草还田对土壤性状及水稻产量的影响 (1995年)

    对稻草还田量和方式的研究表明,每hm ̄2翻压6750kg稻草还田,有利于土壤微团聚体的形成,改善土壤物理状况,提高土壤有机质、氮、磷、钾和有效硅的含量,增产11.76%,覆盖后翻压4500ky/hm ̄2稻草还田次之。

Global site tag (gtag.js) - Google Analytics