【问题标题】:Codeigniter avoid CRSF AttackCodeigniter 避免 CSRF 攻击
【发布时间】:2018-06-26 06:16:39
【问题描述】:

我尝试了两种方法:

-- 使用 form_open :通过这种方法,我可以在请求标头和 cookie 中添加带有 CSRF 令牌的字段。但是每次都会生成相同的 CSRF Token,因此无法阻止攻击。

另外我需要知道,除了在客户端添加Token之外,是否需要在服务器端检查或者自动完成。

-- 使用带有自定义表单标签的隐藏输入字段:这样,我添加了一个随机令牌作为输入字段,仍然无法避免攻击。

对于第二种方法,我需要知道我们需要在 Security.php 文件中进行的更改以及是否需要进行任何服务器端检查。

【问题讨论】:

标签: php codeigniter csrf


【解决方案1】:

建议使用第一种方法,主要是因为 CI 代码是经过充分测试、久经考验的代码。我认为第二种方法是您打算自己编写的。如果是这种情况,您就是在没有正当理由的情况下重新发明轮子。

使用 CI 代码,重要的是要了解令牌的哈希值不会改变,除非您在 config.php 中使用以下内容

$config['csrf_regenerate'] = TRUE;

您需要知道的另一件事是,只有在向服务器发出POST 请求时才会生成新的哈希。这很好,因为 CSRF 保护的需要仅与 POST 请求相关。

当发出多个GET 请求时,即连续多次加载<form>,您可能每次都会看到相同的哈希值。但是如果您提交表单然后重新加载它,您将看到一个新的哈希值。

最后,您应该知道,CSRF 值仅检查 POST 请求,而不检查 GET 请求。

验证成功后,哈希值将从$_POST中移除。

如果您将$config 设置与form_open() 结合使用,上述所有操作都会自动发生。

【讨论】:

    猜你喜欢
    • 2020-02-15
    • 1970-01-01
    • 1970-01-01
    • 2013-05-06
    • 1970-01-01
    • 2011-01-13
    • 2011-09-30
    • 2020-02-16
    • 2019-04-25
    相关资源
    最近更新 更多