php中session會話的安全性簡單理解

來源:互聯網
上載者:User

主要的安全措施有以下兩個方面。

1、防止攻擊者擷取使用者的會話ID。

還有一種更為隱形攻擊手段,攻擊者通過一個被指令碼攻擊突破的Web網站,把被突破的這個網站上的使用者重新定向到另一個網站,然後在重新定向的網站的URL中插入以下代碼:
?PHPSESSID=213456465412312365465412312;

最後發送到Web應用程式。當使用者查看Web應用程式時,PHP會發現沒有與這個會話ID相關聯的資料並且會建立一些資料。使用者不知道發生了什麼,但攻擊者卻知道了會話ID,就可以利用這個會話ID進入應用程式。

要防止這種攻擊,有兩種方法。
(1)檢查php教程.ini中是否開啟了session.use_only_cookie。如果是這種情況,PHP會拒絕基於URL的會話ID。
(2)當啟動會話時,在會話資料中放一個變數,這個變數表示會話是使用者建立的;如果發現會話資料中沒有這個變數,那就說明會話ID是假的,就可以調用session_regenerate_id函數,給現有會話分配一個新的會話ID。

樣本:

通過判斷變數是否存在來確定會話ID的真假,如果存在,則說明會話ID是真的,否則是假的,並使用session_regenerate_id()函數對會話ID變更,重新給會話建立一個新的會話ID,

代碼如下:
複製代碼 代碼如下:

< ?php
session_start () ;
if (!isset ( $_SESSION['shili1'] )) { //判斷shili1變數是否配置
$old_id = session_id () ; //原來的會話ID的變數名
session_regenerate_id () ; //擷取一個新的會話ID
$new_id = session_id () ; //新的會話ID的變數名
echo "old : $old_id<br/>" ; //輸出原來的會話ID
echo "new : $new_id<br/>" ; //輸出新的會話ID
$_SESSION['shili1'] = TRUE ; }
?>

運行結果如圖所示:

這隻是一個樣本,輸出會話ID是為了更好的理解和應用這個函數,而在程式設計中是不需要輸出會話ID的。

2、限制攻擊者擷取會話ID。

限制攻擊者擷取會話ID的方法如下。
(1)使用一個函數(md5)計算User-Agent頭加上某些附加字串資料後的散列值(hash)。(散列函數(hash function)接受一個任意大的資料集,並且將它轉換為一個看起來完全不同的資料,這個資料很短。產生的散列值是完全不可重現的,也不可能由另一個輸入產生。)

在User-Agent字串後面添加一些資料,攻擊者就無法通過對常見的代理值計算md5編碼來試探User-Agent字串。

(2)將這個經過編碼的字串儲存在使用者的會話資料中。
(3)每次從這個使用者接收到請求時,檢查這個散列值。

此方案的代碼如下:
複製代碼 代碼如下:

<?php
define ( ‘ua_seed','webapp' ) ;
session_start () ;
if ( !isset($_SESSION['user_agent'] )){
$_SESSION['user_agent'] = md5 ( $_SERVER['HTTP_USER_AGENT'].ua_seed );
}else{
if ($_SESSION['user_agent'] != md5($_SERVER['HTTP_USER_AGENT'].ua_seed)){} }
?>

通過給攻擊者製造一些麻煩,使攻擊者即使擷取了會話ID,也無法進行破壞,能夠減少對系統造成的損失

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.