php curl帶有csrf-token驗證類比提交方法

來源:互聯網
上載者:User
這篇文章主要介紹了詳解php curl帶有csrf-token驗證類比提交方法,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

通常為了安全會在表單裡加入一個隨機的token值來防止csrf攻擊。

要想類比提交有token驗證的網站其實也不難。

1.通過正則擷取token
2.帶上擷取到的token類比提交

下面是一個成功的例子

目錄結構

│ form.php –需要類比的表單 │ getForm.php – 類比提交程式 │ post.php –表單驗證程式 │ └─cookie – cookie存放目錄

getForm.php

<?php$cookie_file = './cookie/'.time().'.cookie';$str = getResponse('http://a.curl.com:81/form.php',[],$cookie_file);setcookie("PHPSESSID", "vc0heoa6lfsi3gger54pkns152");preg_match('/<input name="token" type="hidden" value="(.*)"/U', $str, $match);$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

<?phpsession_start();$_SESSION['token'] = md5($_SERVER['REQUEST_TIME']);$_SESSION['time'] = date("Y-m-d H:i:s");session_write_close();//echo $_SESSION['auth'];?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"> <head> <title> new document </title> <meta name="generator" content="editplus" /> <meta name="author" content="" /> <meta name="keywords" content="" /> <meta name="description" content="" /> </head> <body><form action="post.php" method="post">  <p><input name="name" type="text"></p>  <p><input name="password" type="password"></p>  <p><input name="token" type="hidden" value="<?php echo $_SESSION['token']?>"></p>  <p><input type="submit"></p></form> </body></html>

post.php

<?phpsession_start();if(empty($_POST['token'])){  exit ("token is empty!");}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);

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.