【问题标题】:Mojolicious weird cookiesMojolicious 奇怪的饼干
【发布时间】:2022-10-29 22:08:54
【问题描述】:

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

mojolicious=eyJleHBpcmVzIjoxNjY3MDUyNTEzLCJ1c2VyIjoic2ViYXN0aWFuIn1aWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpa WlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlo---8ec2dbb1e9eeb295f610826487a011f3516106cb8a814530e73212a1e6a10d8f

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

$self->session(user => 'sebastian');

我在干净的项目上玩它。 协议:HTTP(无 SSL)

欢乐的 9.28。

【问题讨论】:

  • 我猜这个填充可以防止泄露有关 HTTPS 连接的会话 cookie 内容的信息,但我没有检查 Mojolicious 历史来验证这个猜测。
  • 嗨,阿蒙,我使用的是普通的 http,而不是 SSL。根据文档,此填充不应该在这里。我会继续挖掘。

标签: perl mojolicious


【解决方案1】:

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-20
    • 1970-01-01
    • 2015-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-15
    相关资源
    最近更新 更多