您好,当我尝试使用代码点火器登录时遇到此错误
The action you have requested is not allowed.
这是我对csrf的配置:
$config['csrf_protection'] = TRUE;
$config['csrf_token_name'] = 'csrf_token_name';
$config['csrf_cookie_name'] = 'csrf_cookie_name';
$config['csrf_expire'] = 7200;
这是一个定制的CMS,用于魔兽世界仿真,称为FusionCMS,它使用连接到MySQL数据库的php。
答案 0 :(得分:1)
您提交的每个表单都需要使用表单助手中的form_open('form_action_url')
,以便CodeIgniter自动插入CSRF字段。确保以这种方式打开表单,而不是通过<form method="POST" action="form_action_url">
。
答案 1 :(得分:0)
使用form_open()
作为Form Helper的一部分。此函数会自动将csrf标记生成为隐藏的<input>
或者,vanilla HTML与手动csrf令牌结合使用:
<form method='post' action='somecontroller'>
<input type="hidden" name="<?= $this->security->get_csrf_token_name()?>" value="<?= $this->security->get_csrf_hash()?>" >
<input .../>
</form>
请注意,如果您收到错误消息,指出get_csrf_hash()
不存在,那么您可能使用的是旧版本的CI,而是可以使用此版本:
<input type="hidden" name="<?= $this->security->csrf_token_name?>" value="<?= $this->security->csrf_hash?>" />