午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

您的位置:首頁技術(shù)文章
文章詳情頁

PHP安全-會(huì)話固定

瀏覽:159日期:2022-09-12 08:44:57
會(huì)話固定

關(guān)于會(huì)話,需要關(guān)注的主要問題是會(huì)話標(biāo)識(shí)的保密性問題。如果它是保密的,就不會(huì)存在會(huì)話劫持的風(fēng)險(xiǎn)了。通過一個(gè)合法的會(huì)話標(biāo)識(shí),一個(gè)攻擊者可以非常成功地冒充成為你的某一個(gè)用戶。

一個(gè)攻擊者可以通過三種方法來取得合法的會(huì)話標(biāo)識(shí):

l猜測(cè)

l捕獲

l固定

PHP生成的是隨機(jī)性很強(qiáng)的會(huì)話標(biāo)識(shí),所以被猜測(cè)的風(fēng)險(xiǎn)是不存在的。常見的是通過捕獲網(wǎng)絡(luò)通信數(shù)據(jù)以得到會(huì)話標(biāo)識(shí)。為了避免會(huì)話標(biāo)識(shí)被捕獲的風(fēng)險(xiǎn),可以使用SSL,同時(shí)還要對(duì)瀏覽器漏洞及時(shí)修補(bǔ)。

小提示

要記住瀏覽器會(huì)根據(jù)請(qǐng)求中的Set-cookie頭部中的要求對(duì)之后所有的請(qǐng)求中都包含一個(gè)相應(yīng)的Cookie頭部。最常見的是,會(huì)話標(biāo)識(shí)會(huì)無謂的在對(duì)一些嵌入資源如圖片的請(qǐng)求中被暴露。例如,請(qǐng)求一個(gè)包含10個(gè)圖片的網(wǎng)頁時(shí),瀏覽器會(huì)發(fā)出11個(gè)帶有會(huì)話標(biāo)識(shí)的請(qǐng)求,但只有一個(gè)是有必要帶有標(biāo)識(shí)的。為了防止這種無謂的暴露,你可以考慮把所有的嵌入資源放在有另外一個(gè)域名的服務(wù)器上。

會(huì)話固定是一種誘騙受害者使用攻擊者指定的會(huì)話標(biāo)識(shí)的攻擊手段。這是攻擊者獲取合法會(huì)話標(biāo)識(shí)的最簡(jiǎn)單的方法。

在這個(gè)最簡(jiǎn)單的例子中,使用了一個(gè)鏈接進(jìn)行會(huì)話固定攻擊:

<a >Click Here</a>

另外一個(gè)方法是使用一個(gè)協(xié)議級(jí)別的轉(zhuǎn)向語句:

<?php

header(’Location: http://example.org/index.php?PHPSESSID=1234’);

?>

這也可以通過Refresh頭部來進(jìn)行,產(chǎn)生該頭部的方法是通過真正的HTTP頭部或meta標(biāo)簽的http-equiv屬性指定。攻擊者的目標(biāo)是讓用戶訪問包含有攻擊者指定的會(huì)話標(biāo)識(shí)的URL。這是一個(gè)基本的攻擊的第一步,完整的攻擊過程見圖4-3所示。

Figure 4-3. 使用攻擊者指定的會(huì)話標(biāo)識(shí)進(jìn)行的會(huì)話固定攻擊

PHP安全-會(huì)話固定

如果成功了,攻擊者就能繞過抓取或猜測(cè)合法會(huì)話標(biāo)識(shí)的需要,這就使發(fā)起更多和更危險(xiǎn)的攻擊成為可能。

為了更好地使你理解這一步驟,最好的辦法是你自己嘗試一下。首先建立一個(gè)名為fixation.php的腳本:

<?php

session_start();

$_SESSION[’username’] = ’chris’;

?>

確認(rèn)你沒有保存著任何當(dāng)前服務(wù)器的cookies,或通過清除所有的cookies以確保這一點(diǎn)。通過包含PHPSESSID的URL訪問fixation.php:

http://example.org/fixation.php?PHPSESSID=1234

它建立了一個(gè)值為chris的會(huì)話變量username。在檢查會(huì)話存儲(chǔ)區(qū)后發(fā)現(xiàn)1234成為了該數(shù)據(jù)的會(huì)話標(biāo)識(shí):

$ cat /tmp/sess_1234

username|s:5:'chris';

建立第二段腳本test.php,它在$_SESSION[‘username’]存在的情況下即輸入出該值:

<?php

session_start();

if (isset($_SESSION[’username’]))

{

echo $_SESSION[’username’];

}

?>

在另外一臺(tái)計(jì)算機(jī)上或者在另一個(gè)瀏覽器中訪問下面的URL,同時(shí)該URL指定了相同的會(huì)話標(biāo)識(shí):

http://example.org/test.php?PHPSESSID=1234

這使你可以在另一臺(tái)計(jì)算機(jī)上或?yàn)g覽器中(模仿攻擊者所在位置)恢復(fù)前面在fixation.php中建立的會(huì)話。這樣,你就作為一個(gè)攻擊者成功地劫持了一個(gè)會(huì)話。

很明顯,我們不希望這種情況發(fā)生。因?yàn)橥ㄟ^上面的方法,攻擊者會(huì)提供一個(gè)到你的應(yīng)用的鏈接,只要通過這個(gè)鏈接對(duì)你的網(wǎng)站進(jìn)行訪問的用戶都會(huì)使用攻擊者所指定的會(huì)話標(biāo)識(shí)。

產(chǎn)生這個(gè)問題的一個(gè)原因是會(huì)話是由URL中的會(huì)話標(biāo)識(shí)所建立的。當(dāng)沒有指定會(huì)話標(biāo)識(shí)時(shí),PHP就會(huì)自動(dòng)產(chǎn)生一個(gè)。這就為攻擊者大開了方便之門。幸運(yùn)的是,我們以可以使用session_regenerate_id( )函數(shù)來防止這種情況的發(fā)生。

<?php

session_start();

if (!isset($_SESSION[’initiated’]))

{

session_regenerate_id();

$_SESSION[’initiated’] = TRUE;

}

?>

這就保證了在會(huì)話初始化時(shí)能有一個(gè)全新的會(huì)話標(biāo)識(shí)。可是,這并不是防止會(huì)話固定攻擊的有效解決方案。攻擊者能簡(jiǎn)單地通過訪問你的網(wǎng)站,確定PHP給出的會(huì)話標(biāo)識(shí),并且在會(huì)話固定攻擊中使用該會(huì)話標(biāo)識(shí)。

這確實(shí)使攻擊者沒有機(jī)會(huì)去指定一個(gè)簡(jiǎn)單的會(huì)話標(biāo)識(shí),如1234,但攻擊者依然可以通過檢查cookie或URL(依賴于標(biāo)識(shí)的傳遞方式)得到PHP指定的會(huì)話標(biāo)識(shí)。該流程如圖4-4所示。

該圖說明了會(huì)話的這個(gè)弱點(diǎn),同時(shí)它可以幫助你理解該問題涉及的范圍。會(huì)話固定只是一個(gè)基礎(chǔ),攻擊的目的是要取得一個(gè)能用來劫持會(huì)話的標(biāo)識(shí)。這通常用于這樣的一個(gè)系統(tǒng),在這個(gè)系統(tǒng)中,攻擊者能合法取得較低的權(quán)限(該權(quán)限級(jí)別只要能登錄即可),這樣劫持一個(gè)具有較高權(quán)限的會(huì)話是非常有用的。

如果會(huì)話標(biāo)識(shí)在權(quán)限等級(jí)有改變時(shí)重新生成,就可以在事實(shí)上避開會(huì)話固定的風(fēng)險(xiǎn):

<?php

$_SESSION[’logged_in’] = FALSE;

if (check_login())

{

session_regenerate_id();

$_SESSION[’logged_in’] = TRUE;

}

?>

Figure 4-4. 通過首先初始化會(huì)話進(jìn)行會(huì)話固定攻擊

PHP安全-會(huì)話固定

小提示

我不推薦在每一頁上重新生成會(huì)話標(biāo)識(shí)。雖然這看起來確實(shí)是一個(gè)安全的方法。但與在權(quán)限等級(jí)變化時(shí)重新生成會(huì)話標(biāo)識(shí)相比,并沒有提供更多的保護(hù)手段。更重要的是,相反地它還會(huì)對(duì)你的合法用戶產(chǎn)生影響,特別是會(huì)話標(biāo)識(shí)通過URL傳遞時(shí)尤甚。用戶可能會(huì)使用瀏覽器的訪問歷史機(jī)制去訪問以前訪問的頁面,這樣該頁上的鏈接就會(huì)指向一個(gè)不再存在的會(huì)話標(biāo)識(shí)。

如果你只在權(quán)限等級(jí)變化時(shí)重新生成會(huì)話標(biāo)識(shí),同樣的情況也有可以發(fā)生,但是用戶在訪問權(quán)限變更前的頁面時(shí),不會(huì)因?yàn)闀?huì)話丟失而奇怪,同時(shí),這種情況也不常見。

標(biāo)簽: PHP
相關(guān)文章:
主站蜘蛛池模板: 9色在线视频 | 久热在线视频 | 久久久999 | 日日精 | 伊人青草 | 九九综合网 | 亚洲男人的天堂网站 | 天天爱天天干天天操 | 久久福利一区 | 碰在线视频 | 久久精品一级片 | 亚洲午夜在线播放 | 台湾av在线播放 | 美女黄色大片 | 牛牛av| 亚洲涩网 | 日韩视频免费在线观看 | 国产三级在线观看视频 | 国产精品精品视频 | 日韩性爰视频 | 丁香六月激情 | 红桃视频国产精品 | 高清视频一区二区三区 | 99热亚洲| 成年人网站在线免费观看 | 国内精品久久久久久久久久 | 精品视频一二三 | 久久8 | 亚洲黄色激情 | 深夜福利在线视频 | 97超碰自拍 | 亚洲激情网 | 一区二区三区精品国产 | 成人免费看片98欧美 | 综合色av | 亚洲一区二区三区精品视频 | 超碰免费在线播放 | 超碰在线国产 | 亚洲欧美日韩免费 | 免费在线观看日韩av | 色优久久 |