怎么玩! 2.3.x验证cookie没有被篡改?

时间:2018-02-06 01:38:04

标签: cookies playframework session-cookies digital-signature playframework-2.3

在Play游戏2.3.x的documentation中:

  

当然,cookie值是使用密钥签名的,因此客户端无法修改cookie数据(或者它将被无效)。

我很想知道Play验证如何签署cookie。因此,遵循代码,Cookie为parsed from the headerdecoded in the Cookie helper,但当我查看request cookieheader时,数据没有签名?

At this line表达式cookieHeader的评估结果为:sessionId=72312312312369; Path=/; HTTPOnly

该值是否还应包含可以使用应用程序密钥验证的签名值?

1 个答案:

答案 0 :(得分:2)

是的,它应该。 PLAY_SESSION(或您重命名为的任何内容)必须在开头包含签名部分,如

PLAY_SESSION=eyJhbGcxxxxxxxxx-userid...

eyJhbGcxxxxxxxxx是标志部分。在您链接到的文件中,您可以发现此部分是

生成于第430行:https://github.com/playframework/playframework/blob/2.3.x/framework/src/play/src/main/scala/play/api/mvc/Http.scala#L430

并在第467行验证:https://github.com/playframework/playframework/blob/2.3.x/framework/src/play/src/main/scala/play/api/mvc/Http.scala#L467