您请求的操作不允许出错

Far*_*mar 10 codeigniter pyrocms

我创建了一个名为Gallery的模块,它在我的localhost版本2.0.3上正常工作,但是当在远程站点上使用版本2.1.0时,我无法提交表单而且我收到错误:

不允许您请求的操作.

为什么是这样?

Joe*_*984 25

我同意@Jhourlad Estrella修复问题而不是禁用安全功能,但是我觉得真正的问题是隐藏输入字段来保存令牌.

而不是使用纯HTML来创建表单元素使用form_open()form_close()辅助函数.原因是因为当您使用辅助函数时,它会自动将csrf标记作为隐藏字段插入到表单中.

您也可以通过在表单中​​添加令牌作为隐藏输入字段来手动执行此操作

<input type="hidden" name="csrf_hash_name" value="your-hash-value-here">
Run Code Online (Sandbox Code Playgroud)

这样做可以让您免受CSRF攻击,并解决您遇到的问题.

希望这可以帮助其他人,因为这让我第一次搞清楚这个问题.

  • 如果你不能使用`form_open()`或`form_close()`你可以使用`$ this-> security-> get_csrf_hash();`和`$ this-> security-> get_csrf_token_name获取CSRF令牌名和值();` (4认同)
  • 这应该标记为正确的答案 (2认同)

Yan*_*erk 15

这是与CSRF保护相关的Codeigniter错误.你可以取消它cms/config/config.php

  • 当然,关闭CSRF保护意味着您对CSRF攻击持开放态度. (12认同)
  • 我同意HighlyIrregular这并没有真正解决问题,它可以解决这个问题并让OP对CSRF攻击开放.JoeMoe1984和Jhourlad Estrella有更好的答案.我们不应该鼓励安全性较低的编码/开发实践. (8认同)