我正在尝试使用Angular.js和CodeIgniter实现CSRF,但是,我不确定我的方法是否安全。
当Angular发送帖子,发送或删除请求时,我在PHP中有一个自定义安全类,请检查请求中的$ _SERVER [' HTTP_COOKIE']。如果它包含CSRF cookie,我会根据$ _COOKIE变量中的值验证它。
我不确定这些是否总是相同的值,而不是实际上做什么或什么。有没有更好的方法来处理这个问题?
答案 0 :(得分:0)
我没有使用角度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。