首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Phoenix框架:恶意重用Session Cookie访问网站

Phoenix框架:恶意重用Session Cookie访问网站
EN

Stack Overflow用户
提问于 2019-12-20 03:37:57
回答 1查看 126关注 0票数 1

对于初学者,我目前设置的Plug.Session如下所示:

代码语言:javascript
复制
plug Plug.Session,
    store: :cookie,
    key: "_key",
    signing_salt: "SALT_HERE"

当用户注销时,他们会点击:

代码语言:javascript
复制
def logout(conn, _) do
    conn
    |> configure_session(drop: true)
    |> redirect(to: "/login")
  end

所有登录/注销功能都会正常工作,并在登录表单上生成一个新的_key。我遇到的问题是,如果我在登录时复制_key的值,并在注销时通过Chrome Debugger替换浏览器中的Cookie值,我可以在不登录的情况下导航到一个直接的GET URL,然后就可以像登录一样访问所有内容。

有没有解决这个问题的好方法?我意识到,获取登录用户的_key值并在他们再次登录并生成新值之前使用它是非常困难的,但在浏览了一段时间后,我找不到任何关于这方面的信息。

EN

回答 1

Stack Overflow用户

发布于 2019-12-20 03:57:19

解决这个问题的方法是将会话存储从cookie移动到服务器端。使用store: :cookie时,所有会话信息都存储在用户的机器上的cookie中。它是用保存在服务器上的密钥加密的。该|> configure_session(drop: true)只清除该用户的cookie。如果您在服务器端将会话存储更改为ets或redis,则用户的cookie仅包含引用存储在服务器上的会话数据的密钥,从而使您可以完全控制使会话无效。

可以帮助您做到这一点的示例包:https://github.com/thoughtbot/redbird

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59415929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档