加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_镇江站长网 (https://www.0511zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

详解php curl带 有csrf-token验证模拟提交方法

发布时间:2023-02-13 10:51:11 所属栏目:PHP教程 来源:
导读:  通常为了安全会在表单里加入一个随机的token值来防止csrf攻击。

  要想模拟提交有token验证的网站其实也不难。

  1.通过正则获取token 2.带上获取到的token模拟提交

  下面是一个成功的例子
  通常为了安全会在表单里加入一个随机的token值来防止csrf攻击。
 
  要想模拟提交有token验证的网站其实也不难。
 
  1.通过正则获取token 2.带上获取到的token模拟提交
 
  下面是一个成功的例子
 
  目录结构
  getForm.php
 
  $post['token'] = $match[1];
  $post['name'] = '3333333';
  $post['password'] = '12121213';
  print_r(getResponse('http://a.curl.com:81/post.php',$post,$cookie_file));
  function getResponse($url,$data=[],$cookie_file='',$timeout = 3)
  {
  if(empty($cookie_file))
  {
  $cookie_file = '.cookie';
  }
 
  $ch = curl_init();
  curl_setopt($ch,CURLOPT_URL,$url);
  curl_setopt($ch,CURLOPT_REFERER,"https://www.baidu.com");  //构造来路
  curl_setopt($ch,CURLOPT_USERAGENT,"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/54.0.2840.59 Safari/537.36");
 
  if(!empty($data))
  {
    curl_setopt($ch,CURLOPT_POST,true);
    curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
  }
  curl_setopt($ch,CURLOPT_COOKIEJAR,$cookie_file);// 取cookie的参数是
  curl_setopt ($ch,CURLOPT_COOKIEFILE,$cookie_file); //发送cookie
  curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
  curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
  try
  {
     $handles = curl_exec($ch);
     curl_close($ch);
     return $handles;
  }
  catch (Exception $e)
  {
    echo 'Caught exception: ',$e->getMessage(),"\n";
  }
  unlink($cookie_file);
  }
 
  form.php
 
 
 
  post.php
 
  if(empty($_SESSION['token']))
  {
  exit ("session is empty");
  }
  if($_POST['token'] != $_SESSION['token'])
  {
  exit ("token ");
  } else
  {
  unset($_SESSION['token']);
  }
 
  echo PHP_EOL;
  echo "pass";
  print_r($_REQUEST);
 
  echo PHP_EOL;
  print_r($_SERVER);
 
  以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程之家。
 

(编辑:应用网_镇江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!