【问题标题】:How to deal with csrf security in codeigniter如何处理 codeigniter 中的 csrf 安全性
【发布时间】:2017-11-05 19:21:45
【问题描述】:

我有一个项目,我们应该使用 CI 在 2 个不同的应用程序中进行交互。我使用 post 方法将请求从第一个应用程序发送到第二个应用程序。在我配置 csrf 并使用表单进行测试后,我得到了输出

An Error Was Encountered.The action you have requested is not allowed.

我想知道如何处理这个问题? 我正在使用 CI v2

【问题讨论】:

    标签: api codeigniter post csrf csrf-protection


    【解决方案1】:

    我相信你已经为 CSRF 做了正确的设置。如果没有,请参考 Codeigniter CSRF 文档。为此,下面是链接。 https://www.codeigniter.com/user_guide/libraries/security.html#cross-site-request-forgery-csrf

    现在,对于 API,您需要将来自 CSRF 的 URI 列入白名单。

    对于这样的使用,

    $config['csrf_exclude_uris'] = array('api/person/add', 'api/person/edit/[0-9]+');
    

    还支持正则表达式(不区分大小写):

        $config['csrf_exclude_uris'] = array(
            'api/record/[0-9]+',
            'api/title/[a-z]+'
        );
    

    【讨论】:

    • 这个数组里面有什么?那个是网站 url 还是 API url?
    • 您的帖子网址,除了base_url();,这意味着如果您的网址是http://example.com/api/person/add,那么只需输入api/person/add
    • 我想从 mysite.com/myfrom 的表单中访问 example.com/test/index_post。我已经在配置 example.com 中的 csrf_token 中输入了“TRUE”,并且我使用 $this->security->get_csrf_token_name(),'hash' => $this->security ->get_csrf_hash());?> 从我的表单生成令牌。但仍然显示相同的错误。我该如何解决这个问题?
    • 你试过 config.php 中的$config['csrf_exclude_uris'] = array('test/index_post', 'test/index');
    • 对不起,我使用 CI 2,我只知道在 CI 版本 2 中没有 csrf_exclude_uris 函数
    猜你喜欢
    • 1970-01-01
    • 2015-04-12
    • 2018-01-04
    • 1970-01-01
    • 2013-11-23
    • 2020-07-23
    • 2021-12-14
    • 2017-10-27
    • 1970-01-01
    相关资源
    最近更新 更多