我想实现CSRF攻击和发送链接代码给用户。此url用作更改密码用户。
在此实现的CSRF攻击中,黑客使用curl发送假url帖子,并发送参数“密码”来更改密码用户目标。
攻击目标代码
<?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中检查。
为什么会话不能从假url获取会话?
发布于 2019-08-23 05:27:39
Curl请求不能进行会话,因为它是通过HTTP的请求,会话总是在用户的系统上维护。所以,首先,你必须建立强大的逻辑和程序来保护它,你不能用Curl检查csrf。你所做的不是一个好办法。
您应该设置一个令牌以及密码重置链接,并检查每当用户单击该标记来重置密码,并确保密码始终过期。
发布于 2019-08-23 05:18:37
好吧,也许在你的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);
}https://stackoverflow.com/questions/57620139
复制相似问题