将 java 个 bean 序列化为 cookie:不好吗?
Serializing a java bean into a cookie: Is it bad?
在我工作的组织中,对以下内容进行了认真的辩论。
场景:
有一个具有 6 个不同属性的 POJO,它们都是字符串类型。这些值需要作为 cookie 保存,以便当有人在网站上进行预订时可以将其取回。 POJO 中的这些值表示将客户带到站点的推荐人。在将其推入cookies之前,它被转换为json格式并存储在cookie中。在检索时,它被检索并反序列化为 POJO。我看不出这有什么大问题,但其他人似乎反对它并且是一个快速的管理会议,我不能问你为什么认为它很糟糕? 这真的很糟糕吗,如果是的话为什么?
补充说明:
会进行检查以确保它是一个有效值,并且在存储到 cookie 之前经过 base64 编码。所以从安全的角度来说,即使有人入侵也不用担心。
我想答案取决于你对这些问题的回答:
既然你永远不能相信客户端请求中的任何东西,那么黑客欺骗 pojo 值是否会带来任何有害影响?
通过将对象发送给客户端,这是否会暴露任何黑客永远不应看到的内部实现细节?
是否存在允许 POJO 对象更改 "shape"(即添加新属性)的机制,以便从客户端发送的旧 POJO 不会破坏应用程序什么时候反序列化为更新的应用程序版本?
你能保证这个值不会超过maximum cookie size
如果这些问题没有引起任何问题,那么我认为在 cookie 中维护用户特定值没有问题
在我工作的组织中,对以下内容进行了认真的辩论。
场景:
有一个具有 6 个不同属性的 POJO,它们都是字符串类型。这些值需要作为 cookie 保存,以便当有人在网站上进行预订时可以将其取回。 POJO 中的这些值表示将客户带到站点的推荐人。在将其推入cookies之前,它被转换为json格式并存储在cookie中。在检索时,它被检索并反序列化为 POJO。我看不出这有什么大问题,但其他人似乎反对它并且是一个快速的管理会议,我不能问你为什么认为它很糟糕? 这真的很糟糕吗,如果是的话为什么?
补充说明:
会进行检查以确保它是一个有效值,并且在存储到 cookie 之前经过 base64 编码。所以从安全的角度来说,即使有人入侵也不用担心。
我想答案取决于你对这些问题的回答:
既然你永远不能相信客户端请求中的任何东西,那么黑客欺骗 pojo 值是否会带来任何有害影响?
通过将对象发送给客户端,这是否会暴露任何黑客永远不应看到的内部实现细节?
是否存在允许 POJO 对象更改 "shape"(即添加新属性)的机制,以便从客户端发送的旧 POJO 不会破坏应用程序什么时候反序列化为更新的应用程序版本?
你能保证这个值不会超过maximum cookie size
如果这些问题没有引起任何问题,那么我认为在 cookie 中维护用户特定值没有问题