在表单提交笨CSRF错误(codeigniter csrf error on form submis

2019-07-29 03:04发布

我有一个表格用笨支架

echo form_open('signup');

echo form_close();

当我提交我得到以下错误

An Error Was Encountered

The action you have requested is not allowed.

不要 always但是往往...

即使隐藏inputfield的形式存在于内部:

<div style="display:none">
<input type="hidden" value="token name is here" name="csrf_token_name">
</div>

这也发生了类似的形式(签到)

编辑:HTML经由形式产生

<form accept-charset="utf-8" method="post" action="http://www.example.com/signup">
<div style="display:none">
<input type="hidden" value="93565fb5855d31af3d46bd655b11a4a6" name="csrf_token_name">
</div>
<input id="username" type="text" placeholder="Username" maxlength="20" value="" name="username">
<input id="email" type="text" placeholder="Email" value="" name="email">
<input id="password" type="password" placeholder="Password" value="" name="password">
<input id="submit" type="submit" value="Sign up" name="submit">
</form>

Answer 1:

你做错了。

试试这个

    <input type="hidden" name="<?php echo $this->security->get_csrf_token_name(); ?>" value="<?php echo $this->security->get_csrf_hash();?>" />

值必须是什么笨计算的CSRF令牌。

或使用的形式助手和笨会自动添加这个隐藏字段。



Answer 2:

在我来说,我只是增加了“csrf_expire”变量 - 令牌应到期的秒数。

从$配置[ 'csrf_expire'] = 7200; 把$ config [ 'csrf_expire'] = 28800;



Answer 3:

变化$配置[ 'csrf_regenerate'] = TRUE;

$配置[ 'csrf_regenerate'] = FALSE; 在配置文件



Answer 4:

如果你只是想获得完全摆脱错误的...
最简单解决方案来解决它们将是:

  1. 打开/配置/ config.php文件

  2. 找到下面的一行:
    $config['csrf_protection'] = TRUE;

  3. 取而代之的是...
    $config['csrf_protection'] = FALSE;

  4. 保存更改。


注意:关闭CSRF保护意味着你敞开到CSRF攻击。



文章来源: codeigniter csrf error on form submission