php - Codeigniter CSRF 问题
问题描述
发生了一些非常奇怪的事情,我在 codeigniter 配置中启用了 CSRF,但是使用 burp 套件可以绕过它。
我正在为我的表单使用函数 form_open() 并将隐藏字段正确添加到表单中。
使用 burp 套件我捕获数据包并删除 csrf cookie 和 post 值。
即使 csrf 详细信息不在发送的标头中,服务器仍会处理更新。
我附上了一张图片。
提前感谢伊恩
https://i.stack.imgur.com/sqUTj.png
** 更新 **
`$config['csrf_protection'] = TRUE;
$config['csrf_token_name'] = 'csrftoken';
$config['csrf_cookie_name'] = 'csrfcname';
$config['csrf_expire'] = 7200;
$config['csrf_regenerate'] = TRUE;
$config['csrf_exclude_uris'] = array('account/ajax_log_custom_doc_download');`
** 已修复 ** 我发现了问题,那就是 $this->csrf_show_error(); 实际上并没有处理 403 标头,因此它让 csrf 攻击通过。
解决方法是添加您自己的标头代码并删除脚本,最好扩展安全类然后添加此代码。
http_response_code(403);
die("Forbidden");
解决方案
推荐阅读
- mysql - 安装mysql时文件丢失
- python - 如何使用 Flask-Migrate 轻松更改列?
- sql - 以纳秒为单位的时间戳列上的 Hive 窗口函数范围
- mysql - 当一条路线当前正在向数据库插入大量数据时,如何使所有其他路线正常工作?
- java - 如何在 TranslateAnimation 中获得位置?
- angular - 减少高图表中 X 轴上的数据点数量
- node.js - 错误 [ERR_PACKAGE_PATH_NOT_EXPORTED]: No "exports" main 在 /app/node_modules/@babel/helper-compilation-targets/package.json 中解析
- javascript - React 中的条件类名?
- angular - 如何在 docker env 中使用 ngnix 反向代理通信 UI 和后端应用程序
- python - Python NameError - 名称未定义