当前位置: 首页 > 知识库问答 >
问题:

CSRF已启用将403(禁止)抛入CodeIgniter

曾丰茂
2023-03-14

因此,我计划在我的网站中实现CSRF,并设置所需的内容,我认为我设置正确,但仍然存在ajax提交表单的问题。

$config['csrf_protection'] = TRUE;
$config['csrf_token_name'] = 'csrf_token_name';
$config['csrf_cookie_name'] = 'csrf_cookie_name';
$config['csrf_expire'] = 7200;
$config['csrf_regenerate'] = FALSE;
$config['csrf_exclude_uris'] = array();

这就是我在配置中的内容,在配置中我设置了$config['CSRF_REGENERATE']=false;以防止每次提交时的重新生成(基于此讨论Ajax CSRF 403禁止的codeigniter)。

而我的表单,我没有使用html表单标记,而是使用form_open()form_close()

Ajax提交表单:

$('#formData').on('submit', function(e){
    e.preventDefault();
    var formData = new FormData($(this)[0]);

    $.ajax({
        type: 'post',
        cache : false,
        processData: false,
        dataType: 'json',
        url: 'example.com.sg/login/verify',
        data: formData,
        success: function (res) {
            if(res.status == true){
                window.location.href = res.redirect;
            }
        },
        error: function(err){
            console.log(err.responseText)
        }
    });
})

PHP函数

public function verify(){
    $this->form_validation
        ->set_rules('email', 'Email', 'trim|required|valid_email')
        ->set_rules('password', 'Password', 'trim|required');

    if($this->form_validation->run() == true){
        // do email and password verification
        echo json_encode([ 'status' => true, 'redirect' => base_url('dashboard') ]);
    } else {
        $this->returnFormError($this->form_validation->error_array());
    }
}

如果我将ajax类型更改为get,它可以工作,但不能工作post。如果从控制台查看代码,我的表单在隐藏输入中包含此csrf令牌。

共有1个答案

柴翰藻
2023-03-14

//在config.php中$config['encryption_key']='some key';首先更新这个

 类似资料:
  • 问题内容: 我让库的其余部分完全正常工作,只是试图生成api键,并通过ajax执行时禁止抛出403。 我跟踪到REST_Controller下的_remap函数..好像我不正确地调用url一样? 工作流程: 他们注册一个帐户后,单击“生成密钥”后,将在site1.com上使用以下表格。 ajax呼叫: GitHub上的REST-SERVER:https : //github.com/philstu

  • 我试图使用mongorestore命令恢复Cosmos上转储的数据库,但不幸的是,它抛出了如下错误: 运行创建命令时出错:(未经授权)错误 = 13,详细信息 ='响应状态代码不表示成功:禁止访问 (403);子状态: 0;活动 Id: 421d33eb-dea0-4372-92b0-ece63fd2b357;原因:(不允许通过 Azure Cosmos DB 终结点对资源'dbs'执行'POST

  • 问题内容: 禁止(403)CSRF验证失败。请求中止。即使使用{%csrf_token%}我正在尝试在django中进行登录,但出现此错误,我检查了CSRF文档,但对我来说没有任何用处。 这是HTML: 就像你在上面看到的那样,我使用了{%csrf_token%},并且在已安装的应用程序中有“ django.middleware.csrf.CsrfViewMiddleware”。 我的看法是: 我

  • 问题内容: 我最近尝试使用Apache设置测试服务器。该站点必须在domain下运行。我总是会出错。我使用的是Ubuntu 10.10服务器版本。doc根目录在dir下。以下是我的设置: / var / www的内容 服务器上主机文件的内容(IP 192.168.2.5) 网站配置 我的文档根目录中没有文件。权限设置正确(可通过www-data读取)。 如果我从桌面输入IP地址,则该站点将正确显示

  • 问题内容: 我有一个合作伙伴,已经为我创造了一些内容供您抓取。 我可以使用浏览器访问该页面,但是当尝试使用user时,会显示。 我尝试使用,但这无济于事-可能是因为我不知道该去哪里。 1)我有什么办法可以刮取数据? 2)如果否,并且不允许合作伙伴将服务器配置为允许我访问,该怎么办? 我尝试使用的代码: 问题答案: 这不是您脚本中的问题,而是合作伙伴Web服务器安全性中的一项功能。 很难确切地说出是

  • 问题内容: 我正在尝试制作Sitecraper。我是在本地计算机上制作的,在那儿工作得很好。当我在服务器上执行相同操作时,它显示403禁止错误。我正在使用PHP简单HTML DOM解析器 。我在服务器上收到的错误是这样的: 警告:file_get_contents(http://example.com/viewProperty.html?id=7715888)[function.file- get