日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

PHP安全-跨站請求偽造

瀏覽:200日期:2022-09-12 09:33:37
跨站請求偽造

跨站請求偽造(CSRF)是一種允許攻擊者通過受害者發送任意HTTP請求的一類攻擊方法。此處所指的受害者是一個不知情的同謀,所有的偽造請求都由他發起,而不是攻擊者。這樣,很你就很難確定哪些請求是屬于跨站請求偽造攻擊。事實上,如果沒有對跨站請求偽造攻擊進行特意防范的話,你的應用很有可能是有漏洞的。

請看下面一個簡單的應用,它允許用戶購買鋼筆或鉛筆。界面上包含下面的表單:

CODE:

<form action='buy.php' method='POST'>

<p>

Item:

<select name='item'>

<option name='pen'>pen</option>

<option name='pencil'>pencil</option>

</select><br />

Quantity: <input type='text' name='quantity' /><br />

<input type='submit' value='Buy' />

</p>

</form>

一個攻擊者會首先使用你的應用以收集一些基本信息。例如,攻擊者首先訪問表單并發現兩個表單元素item及quantity,他也同時知道了item的值會是鉛筆或是鋼筆。

下面的buy.php程序處理表單的提交信息:

CODE:

<?php

session_start();

$clean = array();

if (isset($_REQUEST[’item’] && isset($_REQUEST[’quantity’]))

{

/* Filter Input ($_REQUEST[’item’], $_REQUEST[’quantity’]) */

if (buy_item($clean[’item’], $clean[’quantity’]))

{

echo ’<p>Thanks for your purchase.</p>’;

}

else

{

echo ’<p>There was a problem with your order.</p>’;

}

}

?>

攻擊者會首先使用這個表單來觀察它的動作。例如,在購買了一支鉛筆后,攻擊者知道了在購買成功后會出現感謝信息。注意到這一點后,攻擊者會嘗試通過訪問下面的URL以用GET方式提交數據是否能達到同樣的目的:

http://store.example.org/buy.php?item=pen&quantity=1

如果能成功的話,攻擊者現在就取得了當合法用戶訪問時,可以引發購買的URL格式。在這種情況下,進行跨站請求偽造攻擊非常容易,因為攻擊者只要引發受害者訪問該URL即可。

雖然有多種發起跨站請求偽造攻擊的方式,但是使用嵌入資源如圖片的方式是最普遍的。為了理解這個攻擊的過程,首先有必要了解瀏覽器請求這些資源的方式。

當你訪問http://www.google.com (圖 2-1),你的瀏覽器首先會請求這個URL所標識的資源。你可以通過查看該頁的源文件(HTML)的方式來看到該請求的返回內容。在瀏覽器解析了返回內容后發現了Google的標志圖片。這個圖片是以HTML的img標簽表示的,該標簽的src屬性表示了圖片的URL。瀏覽器于是再發出對該圖片的請求,以上這兩次請求間的不同點只是URL的不同。

圖 2-1. Google的首頁

A CSRF attack can use an img tag to leverage this behavior. Consider visiting a web site with the following image identified in the source:

根據上面的原理,跨站請求偽造攻擊可以通過img標簽來實現。考慮一下如果訪問包括 下面的源代碼的網頁會發生什么情況:

<img src='http://store.example.org/buy.php?item=pencil&quantity=50' />

由于buy.php腳本使用$_REQUEST而不是$_POST,這樣每一個只要是登錄在store.example.org商店上的用戶就會通過請求該URL購買50支鉛筆。

跨站請求偽造攻擊的存在是不推薦使用$_REQUEST的原因之一。

完整的攻擊過程見圖2-2。

圖2-2. 通過圖片引發的跨站請求偽造攻擊

當請求一個圖片時,某些瀏覽器會改變請求頭部的Accept值以給圖片類型以一個更高的優先權。需要采用保護措施以防止這種情況的發生。

你需要用幾個步驟來減輕跨站請求偽造攻擊的風險。一般的步驟包括使用POST方式而不是使用GET來提交表單,在處理表單提交時使用$_POST而不是$_REQUEST,同時需要在重要操作時進行驗證(越是方便,風險越大,你需要求得方便與風險之間的平衡)。

任何需要進行操作的表單都要使用POST方式。在RFC 2616(HTTP/1.1傳送協議,譯注)的9.1.1小節中有一段描述:

“特別需要指出的是,習慣上GET與HEAD方式不應該用于引發一個操作,而只是用于獲取信息。這些方式應該被認為是‘安全’的??蛻魹g覽器應以特殊的方式,如POST,PUT或DELETE方式來使用戶意識到正在請求進行的操作可能是不安全的?!?/p>

最重要的一點是你要做到能強制使用你自己的表單進行提交。盡管用戶提交的數據看起來象是你表單的提交結果,但如果用戶并不是在最近調用的表單,這就比較可疑了。請看下面對前例應用更改后的代碼:

CODE:

<?php

session_start();

$token = md5(uniqid(rand(), TRUE));

$_SESSION[’token’] = $token;

$_SESSION[’token_time’] = time();

?>

<form action='buy.php' method='POST'>

<input type='hidden' name='token' value='<?php echo $token; ?>' />

<p>

Item:

<select name='item'>

<option name='pen'>pen</option>

<option name='pencil'>pencil</option>

</select><br />

Quantity: <input type='text' name='quantity' /><br />

<input type='submit' value='Buy' />

</p>

</form>

通過這些簡單的修改,一個跨站請求偽造攻擊就必須包括一個合法的驗證碼以完全模仿表單提交。由于驗證碼的保存在用戶的session中的,攻擊者必須對每個受害者使用不同的驗證碼。這樣就有效的限制了對一個用戶的任何攻擊,它要求攻擊者獲取另外一個用戶的合法驗證碼。使用你自己的驗證碼來偽造另外一個用戶的請求是無效的。

該驗證碼可以簡單地通過一個條件表達式來進行檢查:

CODE:

<?php

if (isset($_SESSION[’token’]) &&

$_POST[’token’] == $_SESSION[’token’])

{

/* Valid Token */

}

?>

你還能對驗證碼加上一個有效時間限制,如5分鐘:

CODE:

<?php

$token_age = time() - $_SESSION[’token_time’];

if ($token_age <= 300)

{

/* Less than five minutes has passed. */

}

?>

通過在你的表單中包括驗證碼,你事實上已經消除了跨站請求偽造攻擊的風險??梢栽谌魏涡枰獔绦胁僮鞯娜魏伪韱沃惺褂眠@個流程。

盡管我使用img標簽描述了攻擊方法,但跨站請求偽造攻擊只是一個總稱,它是指所有攻擊者通過偽造他人的HTTP請求進行攻擊的類型。已知的攻擊方法同時包括對GET和POST的攻擊,所以不要認為只要嚴格地只使用POST方式就行了。

標簽: PHP
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩欧美久久| 午夜一区在线| 欧美日韩一区二区三区不卡视频| 亚洲一区二区三区无吗| 欧美综合国产| 午夜久久影院| 亚洲欧美日韩国产综合精品二区| 亚洲综合国产| 蜜桃传媒麻豆第一区在线观看| 蜜桃久久精品一区二区| 亚洲日本三级| 国产日韩高清一区二区三区在线 | 在线视频日韩| 中国女人久久久| 亚洲影院天堂中文av色| 日本色综合中文字幕| 国产高清亚洲| 播放一区二区| 美女国产精品| 国产探花在线精品| 水蜜桃精品av一区二区| 久久精品高清| 中文视频一区| 你懂的国产精品永久在线| 精品国产免费人成网站| 一区在线观看| 午夜久久av| 97精品久久| 精品色999| 欧洲激情综合| 欧美在线黄色| 日韩av在线中文字幕| 免费精品国产的网站免费观看| 久久亚洲色图| 国产日韩欧美一区二区三区 | 国产日产精品_国产精品毛片| 国产一区二区三区不卡视频网站 | 国产成人调教视频在线观看| 日韩精品首页| 日韩一区二区三区精品| 麻豆精品久久| 久久精品一区二区不卡| 日韩中文字幕区一区有砖一区 | 精品五月天堂| 亚洲精品在线观看91| 日韩美女精品| 91亚洲自偷观看高清| 极品裸体白嫩激情啪啪国产精品| 免费在线观看精品| 欧美日韩一区二区国产| 99精品视频精品精品视频| 日韩不卡在线观看日韩不卡视频| 狠狠躁少妇一区二区三区| 天堂成人国产精品一区| 免费看久久久| 在线综合亚洲| 欧美片网站免费| 久久国产主播| 国产精品亲子伦av一区二区三区| 欧美 日韩 国产精品免费观看| 日本欧美一区二区在线观看| 欧美三区四区| 国产毛片一区二区三区| 黑丝美女一区二区| 国产精品videosex极品| 亚洲国产日韩欧美在线| 免费看久久久| 亚洲欧美日本国产| 999视频精品| 国产精品网在线观看| 亚洲在线一区| 久久精品福利| 四虎成人精品一区二区免费网站 | 亚洲午夜视频| 国产精品videosex极品| 久久一二三区| 久久国产免费| 国产激情综合| 亚洲啊v在线免费视频| 欧美日中文字幕| 蜜桃精品视频| 日韩激情啪啪| 先锋亚洲精品| 成人午夜国产| 国产精品chinese| 蜜桃久久av一区| 国产超碰精品| 久久亚洲道色| 日韩不卡一区二区| 久久国产精品久久久久久电车 | 四季av一区二区凹凸精品| 97久久超碰| 综合激情网...| 亚洲大全视频| 久久激情一区| 美女一区网站| 久久只有精品| 国产精久久一区二区| 一区二区国产在线| 午夜欧美在线| 久久激情婷婷| 成人久久一区| 丝袜美腿诱惑一区二区三区 | 国产精品久久久久av蜜臀| 亚洲欧洲美洲国产香蕉| 最新亚洲一区| 午夜精品一区二区三区国产| 日韩欧美一区二区三区免费观看| 精品高清久久| 国产毛片精品久久| 日韩精品一区二区三区免费视频| 首页亚洲欧美制服丝腿| 怡红院精品视频在线观看极品| 日韩毛片视频| 91看片一区| 激情欧美国产欧美| 亚洲精品2区| 国产精品社区| 丝袜美腿亚洲一区| 中文字幕一区二区三区在线视频| 国产亚洲精品v| 亚洲欧洲另类| 美女精品在线观看| 首页国产欧美日韩丝袜| 午夜亚洲一区| 亚洲字幕久久| 7777精品| 免费在线观看一区| 四虎8848精品成人免费网站| 日韩毛片视频| 成人av二区| 老司机精品久久| 亚洲精品日本| 91亚洲精品在看在线观看高清| 日韩动漫一区| 欧美成人一二区| 日韩a一区二区| 久久久国产精品一区二区中文| 亚洲午夜黄色| 欧美日韩视频一区二区三区| 久久国产成人| 日韩 欧美一区二区三区| 日本成人在线视频网站| 欧美在线看片| 电影91久久久| 欧美.日韩.国产.一区.二区| 亚洲作爱视频| 婷婷精品在线| 麻豆一区在线| 日韩黄色大片| 麻豆精品91| 国产乱论精品| 精品福利久久久| 激情久久五月| 亚洲一区二区三区四区五区午夜| 天堂精品久久久久| 久久精品五月| 国产99精品| 亚洲一二av| 麻豆一区二区99久久久久| 麻豆精品蜜桃| 蜜臀av一区二区三区| 国产激情精品一区二区三区| 欧美gv在线| 欧美资源在线| 国产精品流白浆在线观看| 日韩精品一区二区三区免费观看| 美女精品在线| 精品一区91| 99久久视频| 视频国产精品| 9999国产精品| 日韩中文字幕1| 久久精品国内一区二区三区| 国产一区久久| 国产亚洲精品美女久久久久久久久久| 91免费精品| 在线日韩成人| 欧美www视频在线观看| 免费日韩av| 精品丝袜久久| 蜜桃视频免费观看一区| 精品国产亚洲一区二区三区| 黄色亚洲精品| 久久激情五月婷婷| 在线日韩av| 国产精品最新自拍| 欧美99久久| 久久免费影院| 亚洲一区欧美| 九九精品调教| 国产探花在线精品| 亚洲国产成人精品女人| 麻豆精品av| 蜜臀精品久久久久久蜜臀| 成人在线免费观看91| 亚洲精品麻豆| 性欧美xxxx免费岛国不卡电影| 国产精品欧美三级在线观看| 激情欧美丁香|