序列化 – 如何保护序列化的JAVA对象?

如果通过网络发送序列化对象,如何保护序列化对象? 我怀疑黑客可能会打断/破解我的数据。

任何人都可以详细说明如何实现这个?

这两个演示文稿提供了有关攻击者如何有效篡改Java序列化流的想法:

  1. https://www.owasp.org/images/e/eb/OWASP_IL_2008_Shai_Chen_PT_to_Java_Client_Server_Apps.ppt

  2. http://www.andlabs.org/presentations/Attacking_JAVA_Serialized_Communication-slides.pdf

    如果服务器的类路径上存在易受攻击的类,则还存在注入意外行为并注入代码的风险。 看到这篇文章:

预览Java反序列化

java.crypto.SealedObject就是你要找的东西。

您可以加密或散列它,但java序列化格式是通过网络发送的一个很好的选择 – 更好的解决方案是JSON / XML(加密或用一些加密算法签名)

如前所述,请查看加密,但更具体地说,请查看用于java中网络通信的hte SSL / TLS库。

http://juliusdavies.ca/commons-ssl/ssl.html

当Java中内置了一个非常强大的库时,无需尝试实现安全加密通信。

在我看来,您可以使用SSLSocketSealedObject 。 但是,它会让你的事情变得有点沉重。 但是,本文还介绍了其中一个选项。 http://www.ibm.com/developerworks/library/j-5things1/

您可以使用签名对象和密封对象来保护序列化对象