濮阳杆衣贸易有限公司

主頁 > 知識庫 > 詳解php curl帶有csrf-token驗證模擬提交方法

詳解php curl帶有csrf-token驗證模擬提交方法

熱門標簽:上海做外呼線路的通信公司 地圖標注專員怎么樣 福建銀行智能外呼系統(tǒng)價格 遼寧ai電銷機器人價格 電話機器人銷售主要負責什么 長沙做地圖標注公司 四川保險智能外呼系統(tǒng)供應商 房產中介用的是什么外呼系統(tǒng) 寧波外呼營銷系統(tǒng)

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

要想模擬提交有token驗證的網(wǎng)站其實也不難。

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的參數(shù)是
    curl_setopt ($ch, CURLOPT_COOKIEFILE, $cookie_file); //發(fā)送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

?php
session_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

?php
session_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);

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • php版微信開發(fā)Token驗證失敗或請求URL超時問題的解決方法
  • 關于php微信訂閱號開發(fā)之token驗證后自動發(fā)送消息給訂閱號但是沒有消息返回的問題
  • PHP實現(xiàn)防止表單重復提交功能【基于token驗證】
  • Thinkphp5 微信公眾號token驗證不成功的原因及解決方法
  • php token使用與驗證示例【測試可用】
  • 驗證token、回復圖文\文本、推送消息的實用微信類php代碼
  • php 表單驗證實現(xiàn)代碼
  • 基于PHP+Ajax實現(xiàn)表單驗證的詳解
  • php下常用表單驗證的正則表達式
  • Ajax和PHP正則表達式驗證表單及驗證碼
  • PHP token驗證生成原理實例分析

標簽:澳門 常德 深圳 佛山 宿遷 延安 宜春 工商登記

巨人網(wǎng)絡通訊聲明:本文標題《詳解php curl帶有csrf-token驗證模擬提交方法》,本文關鍵詞  詳解,php,curl,帶有,csrf-token,;如發(fā)現(xiàn)本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《詳解php curl帶有csrf-token驗證模擬提交方法》相關的同類信息!
  • 本頁收集關于詳解php curl帶有csrf-token驗證模擬提交方法的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    通榆县| 将乐县| 台南县| 永丰县| 北宁市| 临泽县| 邛崃市| 广昌县| 广平县| 麻栗坡县| 巩义市| 渭南市| 柳河县| 夏河县| 睢宁县| 蕉岭县| 尉犁县| 祁阳县| 来宾市| 祁连县| 宜川县| 泊头市| 卓资县| 鄂伦春自治旗| 南丹县| 峨山| 鞍山市| 容城县| 宜宾市| 嘉峪关市| 武冈市| 登封市| 望都县| 黄石市| 宜宾县| 康保县| 芜湖县| 庐江县| 资源县| 社会| 教育|