2014-05-04 28 views
0

对封装有疑问,不知道它是否是一个愚蠢的问题要问,但无法找到答案,如果我有一个pojo类被序列化,并通过网络传递,有人可以轻松地通过setter方法破解对象并改变其状态,所以我的情况是封装如何实际上隐藏来自外部系统的数据?Java封装混淆

class TestSeralize implement Serializable{ 
//some setter 
    } 
test=new TstSeralize();// passed over network. 

//hack test by middleman attack & reset through setter 

回答

3

什么是Encapsulation的目的是什么?

封装是使类中的字段保密并通过公共方法提供对字段的访问的技术。

如果一个字段被声明为私有的,它不能被类之外的任何人访问,从而隐藏了该类中的字段。出于这个原因,封装也被称为数据隐藏。

封装不限制公开setter/getter。您必须使用其他技术,如encryption,安全令牌等来检查在流中间进行的任何更改。

请看看下面的链接

1

是的,如果你在没有完整性保护的网络发送一个序列化对象,它是可能有人用不同的序列化对象代替它,接收器不会知道其中的差别。为了避免这种情况,请使用具有完整性保护的网络通道,如TLS。