【问题标题】:For securing forms, when do I issue the token?为了保护表格,我什么时候发行令牌?
【发布时间】:2010-11-07 18:17:26
【问题描述】:

所以,我有一个表单,为了让它更安全一点,并可能有助于防止 CSRF 攻击,我想在隐藏字段中添加一个随机令牌值,该值也存储在我的会话数据中的服务器端。

我应该何时发行新令牌?履行?每页加载哪里有什么表格?每个会话?我可以在表单成功提交后立即使其无效,但我想知道何时生成一个。

如果用户打开单独的窗口但提交第一个表单(现在被覆盖值)?

【问题讨论】:

    标签: php csrf


    【解决方案1】:

    防止并发问题的最简单方法是每次登录只生成一次。攻击者“猜测”您的 CSRF 的机会与他们窃取您的 PHPSESSID 的机会大致相同(或更低)。您还可以在用户的​​访问级别更改时重新生成它,例如在他们更改密码或其他内容之后。

    如果您想真正彻底,您可以生成并存储一组令牌,网站上的每个表单一个令牌。但如果他们可以窃取 CSRF 令牌,他们可能只是窃取了一个会话 ID 并造成了一些真正的损害。

    【讨论】:

      【解决方案2】:
      • 如果您在每个会话中使用一个令牌, 那么你需要一种技术来检查 重复提交的表单(当用户 刷新页面或单击返回 按钮)。
      • 如果按表单使用它,那么如果用户打开 多页,然后只有最后一页 表单将起作用。
      • 我更喜欢使用数组 每个会话生成的令牌,以及 提交令牌时应该是 删除。我读到这种方法可能是 如果你有大量的关注 流量网站。

      我不确定你之前是否读过这篇文章,但我认为这是关于 CSRF 安全性的重要资源: http://shiflett.org/articles/cross-site-request-forgeries

      【讨论】:

        猜你喜欢
        • 2018-06-20
        • 1970-01-01
        • 2013-10-02
        • 2020-01-04
        • 2015-09-12
        • 2023-03-10
        • 1970-01-01
        • 2020-07-05
        • 2020-01-20
        相关资源
        最近更新 更多