0

你好,当我尝试使用代码点火器登录时,我遇到了这个错误

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。

4

2 回答 2

1

您提交的每个表单都需要form_open('form_action_url')从表单助手中使用,以便 CodeIgniter 自动插入 CSRF 字段。确保您以这种方式打开表单,而不是通过<form method="POST" action="form_action_url">.

于 2012-10-11T19:10:27.657 回答
0

根据此线程,您有两个选择:

form_open()用作Form Helper的一部分。这个函数会自动生成csrf token到一个隐藏的<input>

或者,香草 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?>" />
于 2012-10-12T05:43:37.050 回答