我想实施CSRF攻击并将链接代码发送给用户。该网址用作更改密码用户。
在此CSRF实施攻击中,黑客使用curl
发送伪造的url帖子,并发送参数'password'来更改密码用户目标。
攻击目标代码
<?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会话user_id = 0,但是我从这个URL http://localhost/onlineshop/change-password/forgot
id = 1进行检查
为什么会话无法从假网址获得会话?
答案 0 :(得分:0)
在进行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);
OR
print_r($this->session->all_userdata());
您将当前启用所有值。 另外,请确保您已在页面上启用会话。
忘记了要在哪里返回数据,
<?php
function forgot() {
$session_data = $this->ci->session->userdata('user_info');
echo json_encode($session_data);
}
答案 1 :(得分:0)
Curl请求无法进行会话,因为它是通过HTTP发出的请求,并且会话始终保持在用户系统上。因此,首先,您必须制定强大的逻辑并编写程序来保持该状态的保护,您无法使用Curl检查csrf。您做的方式不是一个好方法。
您应该在令牌重置密码链接中设置一个令牌,并确保每当用户单击该令牌重置密码并确保密码始终有效。