当前位置: 首页 > 面试题库 >

Codeigniter(CSRF)jQuery Ajax问题

陈成济
2023-03-14
问题内容

我这里有一个问题,当我尝试使用ajax(POST)发布内容时,我总是收到错误消息。我知道正是CSRF给我带来了这些问题,并且我已经来回尝试了寻找解决方案的过程。但是,我希望这里有人可以帮助我!

这是我不断收到的错误(来自Google Chrome浏览器),

  • 未能加载资源:服务器响应状态为500(内部服务器错误),XHR已完成加载:“ http:// localhost / woho / ajax / images”。 *

PHP(控制器)

class Ajax extends CI_Controller {

    function images() {

        echo 'Hello World';

    }

}

Java脚本

var ID = $(".imageWrap:last").attr("id");
var baseurl = "http://localhost/woho/";
var doScroll = 1;
var cct = $.cookie('csrf_cookie_name');

if (location.href == baseurl) {
    $(window).scroll(function(){
        if ($(window).scrollTop() > $('body').height() / 2) {
            if(doScroll == 1) {                   
                $.post(baseurl + 'ajax/images',{'id' : ID, 'csrf_token_name': cct}, function(data) {
                    alert(data);
                    $("#wrapper_content").append(data);
                    ID++;
                });
            }
        }
    });
}

我来自javascript的CCT变量为我提供了正确的令牌或“哈希”,但是当javascript发送ajax请求时,codeigniter返回错误,例如

遇到错误不允许您执行请求的操作。

我怎样才能解决这个问题?我是否需要验证CSRF令牌或控制器中的某些内容?

我正在使用Codeigniter 2.0.3


问题答案:

试试(javascript):

var ID = $(".imageWrap:last").attr("id");
var baseurl = "http://localhost/woho/";
var doScroll = 1;
var cct = $.cookie("<?php echo $this->config->item("csrf_cookie_name"); ?>");

if (location.href == baseurl) {
    $(window).scroll(function(){
        if ($(window).scrollTop() > $('body').height() / 2) {
            if(doScroll == 1) {                   
                $.post(baseurl + 'ajax/images',{'id':ID,'<?php echo $this->security->get_csrf_token_name(); ?>': cct}, function(data) {
                    alert(data);
                    $("#wrapper_content").append(data);
                    ID++;
                });
            }
        }
    });
}


 类似资料:
  • 我正在使用codeigniter 3.1。9 我已启用CSRF保护,并将设置为true。它工作正常,每次Post请求时令牌都会重新生成,验证也可以工作。除此之外,我还将cookie设置为仅限同一站点的严格连接。 然后我向安全团队提交渗透测试评估,他们拒绝了我的工作,因为csrf攻击漏洞。 他们的论点是,他们更改了cookie令牌并发布参数,然后执行攻击。 他们的回答:CSRF令牌未安全实现。攻击者

  • 问题内容: 最近,我发现了有关CSRF攻击的信息,并很高兴发现Codeigniter v 2.0.0中添加了CSRF保护。 我启用了该功能,并看到在表单中添加了带有令牌的隐藏输入,并且我假设它也在会话中存储了令牌。在POST请求中,CI是否会自动比较令牌,还是必须手动进行比较? 问题答案: 仅当使用此功能时,CSRF令牌才作为隐藏输入添加到表单中。 由Security类创建具有CSRF令牌值的co

  • 我将使用CSRF codeigniter和ajax进行安全登录。但是我有一个问题,我的语法。 这是我的表格: 这是我的javascript: 和我的控制器: 我的模型是:

  • 我遇到了CodeIgniter/CSRF/JSON的问题。 我正在向PHP后端发送内容类型为“application/json”的http POST请求。有效负载是json数据。我将与数据一起传递生成并存储在CSRF cookie中的CSRF令牌。对于标准POST表单请求,它工作正常,但作为json发送时失败。 由于$\u POST数组因JSON内容类型而为空,CodeIgniter无法验证coo

  • 我正在使用CodeIgniter3.0。6.目前正在一页网站上工作,该网站具有搜索功能。我在codeigniter的配置文件中启用了csrf_保护选项,并使用form_open()函数创建表单。 当我按下submit按钮时,搜索功能运行良好,但在提交表单后,当我刷新页面时(使用任何刷新页面的功能,如从keybord或浏览器刷新),CSRF不工作,并显示错误“您请求的操作不允许”。 注意:我使用po

  • 我正在使用codeigniter。我有个奇怪的问题。我在用户登录时设置会话,并将其重定向到新页面。我观察到,会话有时设置,有时不设置。我尝试过使用codeigniter会话 以下是配置文件的外观: