Mojolicious奇怪的饼干

Ars*_*nii 0 perl mojolicious

我正在玩 Mojolicious 并看到会话 cookie 看起来很奇怪:

mojolicious=---8ec2dbb1e9eeb295f610826487a011f3516106cb8a814530e73212a1e6a10d8f

你知道这些“WlpaWlpaWlpaWlpaWlpaWlpa...”是什么意思吗?我看到签名没问题,数据没问题,但是WlpaWlpaWlpaWlpaWlpaWlpa...在base64中这是ZZZZZZ...它们来自哪里?我只有这个代码来设置会话:

$self->session(user => 'sebastian');
Run Code Online (Sandbox Code Playgroud)

我正在 clean 项目上玩它。协议:HTTP(无 SSL)

莫欢乐 9.28。

amo*_*mon 6

此行为已添加到Pull Request #1791中的 Mojolicious 中。填充的目的是让暴力破解用于签署安全 cookie(例如会话 cookie)的应用程序机密变得更加困难。填充字符的选择Z和填充长度似乎是任意选择的。

我认为这种填充作为安全措施几乎完全没有意义。由于它是以确定性方式添加的,因此它不会使暴力攻击变得更加困难。在实现时,在 cookie 中包含填充甚至没有帮助,因为 HMAC 签名计算可以在必要时重新添加填充。相比之下,CSPRNG 的填充,在应用程序的生命周期内不重复使用填充模式,可能会达到预期的效果。比较密码哈希值的盐的概念。

您偶然发现这种未记录的行为表明了多个方面:

  • Mojolicious 的发展速度相当快,并且并不总是保留有关所有功能的详细文档。
  • Mojolicious 尝试默认支持合理的安全措施。
  • 这些安全措施可能有效,也可能无效。

如果您想保护您的应用程序机密免受暴力攻击,那么创建一个适当长度(至少 128 位熵)的强大的加密安全机密非常重要。理想情况下,您的应用程序还会定期轮换机密。Mojolicious 支持拥有多个活动密钥,因此添加新密钥不会使现有会话失效。