序列化 – 如何保护序列化的JAVA对象?
如果通过网络发送序列化对象,如何保护序列化对象? 我怀疑黑客可能会打断/破解我的数据。
任何人都可以详细说明如何实现这个?
这两个演示文稿提供了有关攻击者如何有效篡改Java序列化流的想法:
-
https://www.owasp.org/images/e/eb/OWASP_IL_2008_Shai_Chen_PT_to_Java_Client_Server_Apps.ppt
-
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中内置了一个非常强大的库时,无需尝试实现安全加密通信。
在我看来,您可以使用SSLSocket
或SealedObject
。 但是,它会让你的事情变得有点沉重。 但是,本文还介绍了其中一个选项。 http://www.ibm.com/developerworks/library/j-5things1/
您可以使用签名对象和密封对象来保护序列化对象