0

我正在查看 mochiweb 的源代码并查看测试 cookie 过期时间的数字,这些数字看起来与我继承的服务器的行为完全不同。mochiweb 在源代码中有 111 和 86417(一天加 17 秒),但看起来它只是通过 cookie 过期和测试代码中的任何一个来实现。(参见 mochiweb_cookies.erl)

我正在查看的服务器在大约 10-15 分钟内使用户超时,但我看不到任何设置 cookie 值的代码,也看不到任何通过 mochiweb 源的代码路径,甚至可以让我设置它。

有任何想法吗?

4

1 回答 1

3

这里真的有两个问题:“我的应用程序如何处理会话到期?” 和“如何设置 cookie mochiweb_cookies?” 只有第二个可以在没有进一步信息的情况下得到合理的回答。

Req:ok("text/plain",
       [mochiweb_cookies:cookie("session", "my-session-id", [{max_age, 86417}])],
       "you're logged in!")

mochiweb_cookies:cookie/3 返回一个{"Set-Cookie", "headervalue"}适合作为 和 的参数ResponseHeaders值的对。mochiweb_request:respondmochiweb_request:ok

当然可以不使用mochiweb_cookies模块在 mochiweb 中设置 cookie,毕竟它们只是标题。您的应用程序可能正在通过手工制作标头来设置 cookie,或者同一域下托管的代理或其他应用程序服务可能正在设置 cookie。

话虽如此,如果可能的话,您应该避免依赖 cookie 过期来注销用户。max-age 实际上只是提示浏览器在该时间过去后停止发送 cookie。浏览器或攻击者总是可以行为不端并无限期地发送 cookie。

于 2011-12-02T19:22:23.853 回答