成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

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

PHP安全-跨站請求偽造

瀏覽:167日期: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方式不應該用于引發一個操作,而只是用于獲取信息。這些方式應該被認為是‘安全’的。客戶瀏覽器應以特殊的方式,如POST,PUT或DELETE方式來使用戶意識到正在請求進行的操作可能是不安全的。”

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

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
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
午夜一区二区三区在线观看| 色呦呦网站一区| 男人的天堂成人在线| 国产午夜亚洲精品不卡| 成人性色生活片| 日韩一区和二区| 国产综合久久久久影院| 欧美亚洲另类激情小说| 蜜桃av一区二区在线观看| 国产欧美一区二区三区另类精品| 亚洲私人黄色宅男| 影院欧美亚洲| 亚洲欧美国产毛片在线| 亚洲国产一区二区精品专区| 亚洲国产高清在线| 欧美日韩一区二区三区在线视频| 国产亚洲精品aa午夜观看| 91小宝寻花一区二区三区| 久久久久久99久久久精品网站| 国产91精品一区二区麻豆网站| 日韩欧美aaaaaa| 91小视频免费观看| 欧美国产丝袜视频| 欧美日韩视频在线一区二区观看视频| 欧美videossexotv100| 成人夜色视频网站在线观看| 欧美成人精精品一区二区频| 99视频有精品| 国产精品日韩成人| 亚洲精一区二区三区| 亚洲午夜久久久久久久久久久| 噜噜噜91成人网| 美女尤物国产一区| 欧美一区二区视频免费观看| 成人福利电影精品一区二区在线观看| 久久无码av三级| 欧美日韩精品一本二本三本| 亚洲视频你懂的| 奶水喷射视频一区| 日韩国产一二三区| 欧美日韩精品一区二区三区| 风间由美性色一区二区三区| 亚洲国产综合91精品麻豆| 色网综合在线观看| 国产一区二区三区在线观看免费视频| 日韩欧美的一区| 欧美日韩一区二区视频在线观看 | 亚洲欧美日韩一区| 模特精品在线| 国产高清在线精品| 国产精品二三区| 日本大香伊一区二区三区| 懂色av一区二区三区免费观看| 久久女同互慰一区二区三区| 国内精品久久久久久久影视蜜臀 | 欧美私人啪啪vps| 亚洲电影一级黄| 欧美三级蜜桃2在线观看| 成人综合在线网站| 亚洲三级在线免费| 色诱亚洲精品久久久久久| 国产精品系列在线观看| 国产精品―色哟哟| 色婷婷一区二区| 波多野结衣一区二区三区| 亚洲欧美日韩国产综合在线| 日本电影欧美片| 成人开心网精品视频| 中文字幕一区二区三区乱码在线| 色综合久久88色综合天天免费| 成人免费电影视频| 亚洲综合免费观看高清在线观看| 欧美美女网站色| 国产精品国产一区二区| 日韩精品三区四区| 2023国产一二三区日本精品2022| 在线一区亚洲| 风间由美性色一区二区三区| 亚洲精品ww久久久久久p站| 欧美日韩亚洲国产综合| 国产精品videosex极品| 久久精品国产久精国产爱| 欧美韩国日本不卡| 欧美体内she精视频| 欧美日本一区| 免费观看在线色综合| 亚洲国产高清aⅴ视频| 在线精品视频小说1| 欧美日韩岛国| 裸体歌舞表演一区二区| 国产精品久久久久久妇女6080 | 欧美 日韩 国产精品免费观看| 日韩欧美成人一区二区| 99久久伊人网影院| 性做久久久久久| 欧美xxxxxxxx| 久久精精品视频| 91浏览器在线视频| 蜜桃av噜噜一区| 国产精品免费网站在线观看| 欧美少妇一区二区| 1024日韩| 成人动漫一区二区三区| 亚洲福利国产精品| 久久久国际精品| 欧美日免费三级在线| 99精品国产在热久久| 成人午夜免费av| 石原莉奈一区二区三区在线观看 | 国产欧美一区二区精品性色| 欧洲色大大久久| 狠狠色综合网| 国产高清不卡二三区| 五月综合激情日本mⅴ| 国产人成一区二区三区影院| 欧美日韩一区二区三区不卡| 亚洲激情综合| 北岛玲一区二区三区四区| 麻豆专区一区二区三区四区五区| 中文字幕视频一区二区三区久| 91.com视频| 国产一区二区三区奇米久涩| 岛国精品在线观看| 美女视频黄频大全不卡视频在线播放| 日韩美女精品在线| 久久先锋影音av鲁色资源网| 欧美日韩免费在线视频| 翔田千里一区二区| 韩国亚洲精品| 99久久亚洲一区二区三区青草| 国内精品视频666| 五月激情综合网| 亚洲你懂的在线视频| 国产亚洲欧美日韩日本| 91精品久久久久久久久99蜜臂 | 国产午夜亚洲精品午夜鲁丝片| 欧美一区日韩一区| 一本大道久久a久久精二百| 最新亚洲视频| 欧美日韩高清在线一区| a美女胸又www黄视频久久| 麻豆国产精品视频| 五月天激情综合网| 亚洲综合一二三区| 亚洲视频香蕉人妖| 国产精品天美传媒沈樵| www国产成人免费观看视频 深夜成人网| 6080国产精品一区二区| 欧美视频第二页| 日本福利一区二区| 美日韩在线观看| 亚洲乱码久久| 国内精品久久久久国产盗摄免费观看完整版| 丁香五精品蜜臀久久久久99网站| 六月丁香婷婷色狠狠久久| 丝袜美腿成人在线| 亚洲成人午夜电影| 亚洲激情欧美激情| 亚洲乱码国产乱码精品精的特点| 亚洲国产成人一区二区三区| 久久蜜臀中文字幕| 久久久久综合网| 欧美精品一区二区三区很污很色的| 4438x亚洲最大成人网| 欧美午夜精品免费| 在线观看日韩av先锋影音电影院| 色偷偷久久人人79超碰人人澡| 美女国产一区| 久久九九国产| 美女久久一区| 久久精品一区| 久久中文字幕一区二区三区| 美女日韩在线中文字幕| 免费试看一区| 亚洲综合国产| 亚洲欧美清纯在线制服| 麻豆av一区二区三区| 久久综合久久久| 色8久久精品久久久久久蜜| 老司机一区二区三区| 久久国产直播| 欧美曰成人黄网| 欧美日韩精品欧美日韩精品| 欧美老女人第四色| 制服视频三区第一页精品| 欧美一区二区三区四区视频| 日韩一级免费观看| 久久久精品一品道一区| 中文字幕成人av| 亚洲欧洲精品一区二区三区不卡| 亚洲日本在线视频观看| 亚洲一区二区三区四区在线观看| 婷婷夜色潮精品综合在线| 久久精品72免费观看| 久久福利资源站| 国产精品一区久久久久| 成人免费av网站| 欧美日韩视频| 一本色道久久综合一区 | 国内视频一区|