PHP session會話的安全性分析

2022-10-06 13:48:16 字數 1753 閱讀 7653

從而達到方便快捷的目的,但是它在儲存資訊的時候往往會有一些敏感的東西,這些東西可能成為被攻擊的目標,如銀行的賬號、信用卡事務或檔案記錄等。這就要求在編寫**的時候必須採取安全措施來減少攻擊成功的可能性。

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

1、防止攻擊者獲取使用者的會話id。

獲取會話id的方式很多,攻擊者可以通過檢視明文通訊來獲取,所以把會話id放在url中或者放在通過未加密連線傳輸的cookie中是很危險的;還有在url中(作為_get()引數)傳遞會話id也是不安全的,因為瀏覽器歷史快取中會儲存url,這樣就很容易被讀取。(可以考慮使用ssh進行加密傳輸)

還有一種更為隱蔽的攻擊手段,攻擊者通過乙個被指令碼攻擊突破的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_r程式設計客棧egenerate_id()函式對會話id進行更改,重新給會話建立乙個新的會話id,

**如下:

複製** **如下:

< ?php

session_start () ;

if (!isset ( $_session['shili1'] ))

?>

執行結果如圖所示:

這只是乙個示例,輸出會話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'] ))else }

?>

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

本文標題: php session會話的安全性分析

本文位址: /wangluo/php/83846.html

php session安全問題分析

因此,我們主要解決的思路是效驗session id的有效性.以下為tjeygzprhc引用的內容 複製 如下 php if isset session user agent 如果使用者session id是偽造 elseif session user agent server remote addr...

Web 安全之不安全的會話管理

安全會話管理相對 owasp top 10的漏洞來說是乙個較為冷門的話題,因為即使存在不安全的會話管理也並不能直接證明系統存在安全漏洞 所以對於這類問題白帽子即使發現了也不會報告,而開發者或許並不知道這樣設計存在安全隱患,或者認為沒有出現漏洞的情況下不會被觸發,所以也並不當回事。會話維持是基於 co...

PHP session資訊的更新

今天在更新session資訊時,除錯自己的 遇到了問題,更新總是不成功。我在session中存了乙個物件。在呼叫時,需要require這個物件的檔案,或者把這個類的 copy到當前檔案中。先a檔案設定 session的name xiaoming 再b檔案設定session的name xiaohei ...