【问题标题】:CSRF using Angular.js with PHP CodeIgniter backendCSRF 使用 Angular.js 和 PHP CodeIgniter 后端
【发布时间】:2014-10-11 18:28:42
【问题描述】:

我正在尝试使用 Angular.js 和 CodeIgniter 实现 CSRF,但是我不确定我的方法是否安全。

当 Angular 发送 post、put 或 delete 请求时,我在 PHP 中有一个自定义安全类检查请求中的 $_SERVER['HTTP_COOKIE']。如果它包含 CSRF cookie,我会根据 $_COOKIE 变量中的值对其进行验证。

我不确定这些是否总是相同的值,而实际上并没有做任何事情或什么。有没有更好的方法来处理这个问题?

【问题讨论】:

    标签: javascript php angularjs codeigniter csrf


    【解决方案1】:

    我没有使用 Angular JS,而是使用了 codeigniter。对于 csrf 保护,codeigniter 提供安全类,用于通过表单为各个请求提供安全令牌(或 csrf cookie)。现在你只需要在配置文件下启用这个功能:

    Location: application/config/config.php
    Default Code: $config['csrf_protection'] = FALSE;
    Change it to: $config['csrf_protection'] = TRUE;
    

    通过使其为真,它会自动在表单中插入一个安全令牌,该令牌在服务器端进行验证。 您可以通过以下配置设置更改同一文件中的令牌名称和 cookie 名称:

    $config['csrf_token_name']
    $config['csrf_cookie_name']
    

    重要的一点是,如果您刷新页面,安全令牌不会更改,或者认为它与当前用户会话的安全令牌相同。这是我在 Codeigniter 中发现的一些缺点。 如果您想使用 ajax 进行相同的实现,则需要添加手动代码来传递令牌名称或值,或者对所有请求使用 ajaxSetup。

    通过这种方式,您可以在一定程度上实现 csrf 保护,如果您想要更高的安全性,则可以根据项目需要检查 httponly cookie 或 ssl deployemnt。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-19
      • 2017-07-02
      • 2015-11-05
      • 2011-08-16
      • 1970-01-01
      • 2019-03-02
      • 1970-01-01
      • 2013-07-29
      相关资源
      最近更新 更多