首页 > 解决方案 > 会话用户数据无法使用 curl 获取数据

问题描述

我想实现 CSRF 攻击并将链接代码发送给用户。此 url 用作更改密码用户。

在此实施 CSRF 攻击中,黑客发送虚假 url 帖子curl并发送参数“密码”以更改密码用户目标。

攻击目标代码

<?php
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,
                 "password=12345&re_password=12345");
curl_setopt($ch, CURLOPT_URL, 
                 "http://localhost/onlineshop/change-password/forgot");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
$output = curl_exec($ch); 
curl_close($ch);      
echo $output;

在功能忘记密码

<?php
function forgot() {
    var_dump($this->ci->session->userdata('user_info'));
}

来自假 url session user_id = 0,但我从这个 url http://localhost/onlineshop/change-password/forgotid = 1检查

为什么会话无法从假网址获取会话?

标签: phpcodeignitercurl

解决方案


好吧,在推入您的 CI 会话时可能存在问题:

$arr_user['user_info']['id'] = 2 //any dummy value
// Add user data in session
$this->session->set_userdata($arr_user);

现在要检查并确定,请通过以下方式进行调试print_r($_SESSION);

现在在您想要的页面上,试试这个:

print_r($this->session->userdata); 

或者

print_r($this->session->all_userdata());

您当前将启用所有值。还要确保您在页面上启用了会话。

在您忘记返回数据的位置时,

<?php

    function forgot() {
        $session_data = $this->ci->session->userdata('user_info');
       echo json_encode($session_data);
    }

推荐阅读