提交 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...