PHP漏洞之session會話劫持

2021-06-29 13:50:01 字數 1417 閱讀 5806

提交 attack.php?phpsessid=5a6kqe7cufhstuhcmhgr9nsg45 此id為獲取到的客戶session id,重新整理客戶頁面以後客戶購買的商品變成了2000

session固定攻擊

黑客可以使用把session id發給使用者的方式,來完成攻擊 http://localhost/index.php?user=dodo&phpsessid=1234 把此鏈結傳送給dodo這個使用者顯示

然後攻擊者再訪問 http://localhost/attack.php?phpsessid=1234 後,客戶頁面重新整理,發現商品數量已經成了2000

防範方法

1)定期更改session id

函式 bool session_regenerate_id([bool delete_old_session])

delete_old_session為true,則刪除舊的session檔案;為false,則保留舊的session,預設false,可選

在index.php開頭加上

session_start();

session_regenerate_id(true);

這樣每次從新載入都會產生乙個新的session id

2)更改session的名稱

session的預設名稱是phpsessid,此變數會儲存在cookie中,如果黑客不抓包分析,就不能猜到這個名稱,阻擋部分攻擊session_start();

session_name(「mysessionid」);

3)關閉透明化session id

透明化session id指當瀏覽器中的http請求沒有使用cookies來制定session id時,sessioin id使用鏈結來傳遞;開啟php.ini,編輯session.use_trans_sid = 0

**中int_set(「session.use_trans_sid」, 0);

session_start();

4)只從cookie檢查session id

session.use_cookies = 1 表示使用cookies存放session id

session.use_only_cookies = 1 表示只使用cookies存放session id,這可以避免session固定攻擊

**中int_set(「session.use_cookies」, 1);

int_set(「session.use_only_cookies」, 1); p>

5)使用url傳遞隱藏引數

session_start();

$seid = md5(uniqid(rand()), true));

$_session["seid"] = $seid;

攻擊者雖然能獲取session資料,但是無法得知$seid的值,只要檢查seid的值,就可以確認當前頁面是否是web程式自己呼叫的。

php 使用會話session

cookie 在客戶端上儲存少了資訊 cookie session 會話 解決cookie大小限制 數量 其他 setcookie 設定cookie 在客戶端生成cookie檔案,可以保持 到期時間 名稱 值.setcookie name lee time 7 24 60 60 讀取cookie i...

PHP的會話處理函式session

當執行乙個應用程式時,你會開啟它,做些更改,然後關閉它。這很像一次會話。計算機清楚你是誰。它知道你何時啟動應用程式,並在何時終止。但是在網際網路上,存在乙個問題 伺服器不知道你是誰以及你做什麼,這是由於 http 位址不能維持狀態。通過在伺服器上儲存使用者資訊以便隨後使用,php session 解...

Django會話之session(手動設定)

在之前的帖子中,介紹了在django中如何手動設定cookie,由於cookis儲存在客戶端,對於帳戶安全要求嚴格的應用來說,儲存在客戶端顯然不是上策,故而需要session,由於session是儲存在服務端,安全較session高,本貼接上繼續session設定。關鍵 如下 in my views...