站长网 PHP教程 详解php curl带有csrf-token验证模拟提交方法

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

通常为了安全会在表单里加入一个随机的token值来防止csrf攻击。 要想模拟提交有token验证的网站其实也不难。 1.通过正则获取token 2.带上获取到的token模拟提交 下面是一个成功的例子 目录结构 getForm.php $post[‘token’] = $match[1]; $post[‘name’] = ‘

通常为了安全会在表单里加入一个随机的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


new document






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);

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程之家。

本文来自网络,不代表站长网立场,转载请注明出处:https://www.zwzz.com.cn/html/jc/php/2021/0522/3873.html

作者: dawei

【声明】:站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。
联系我们

联系我们

0577-28828765

在线咨询: QQ交谈

邮箱: xwei067@foxmail.com

工作时间:周一至周五,9:00-17:30,节假日休息

返回顶部