亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PHP會話劫持

PHP會話劫持

PHP
繁花不似錦 2019-11-29 15:39:18
我有一個關于PHP中會話劫持的問題。我今天早上一直在閱讀有關它的信息,我有一些問題在我閱讀的文檔中并未得到明確回答。用戶可以更改他們在我的網站上的會話嗎?例如,如果他們在登錄時擁有X會話,是否可以選擇將該會話更改為Y或Z?我以為會話是由瀏覽器設置的,因此無法更改,但是我一直在閱讀的所有會話劫持資料都使我有些懷疑。
查看完整描述

3 回答

?
侃侃爾雅

TA貢獻1801條經驗 獲得超16個贊

術語“會話”被重載以表示服務器上和瀏覽器中的不同內容。瀏覽器會話最多只能與服務器會話緊密連接?!皶捊俪帧笔侵阜掌鲿?。


在服務器端,會話具有ID(在客戶端和服務器之間傳遞),內容(存儲在服務器上)和可能的其他屬性(例如上次訪問時間)。會話ID通常以cookie的形式傳遞。在PHP中,cookie的默認名稱是“ PHPSESSID”。如果沒有cookie,PHP將(可選)使用同名的查詢字符串參數(“ PHPSESSID”)。此cookie(或查詢參數)可以輕松更改,因此會話標識符也可以更改。


會話的內容(即包含用戶的登錄狀態)不能由客戶端更改,數據存儲在服務器上,只能由該服務器上的PHP腳本更改。請注意,在共享主機環境(由其他服務或用戶共享)中,如果使用默認會話存儲目錄(/tmp),則可以覆蓋會話。為了防止這種情況,要么使用數據庫,要么使用具有適當目錄權限session_set_save_handler()集的自定義會話目錄session.save_path(最好設置為700,這意味著只有所有者(PHP用戶)才能對其進行讀寫)。


為了防止會話劫持,您必須具有其他方法可以根據會話識別用戶。這可以是用戶代理,IP地址或其他cookie。前面提到的方法只是解決方法,如果涉及到會話,則最好使用HTTPS來防止會話cookie的竊取。不要忘記將httponly標志設置為true使用session_set_cookie_params()


在客戶端,“會話”再次超載并在各種上下文中使用(例如,會話管理器,當打開瀏覽器時會恢復打開的頁面,會話cookie和sessionStorage)。我們可以說瀏覽器會話由視圖及其相關數據的集合組成,以嘗試將這些含義組合在一起(絕不是標準的含義)。(通過“視圖”,我指的是帶標簽的瀏覽器中的選項卡,而非帶標簽的瀏覽器中的窗口; DOM window對象將視圖公開給JS。)每個視圖都有一個歷史記錄,一個當前頁面和頁面數據。會話中的視圖之間共享同一域中頁面的頁面數據;如果兩個頁面位于不同的域或不同的會話中,則它們不共享數據。退出瀏覽器會關閉所有打開的會話,可能會保存部分會話(例如歷史記錄,當前頁面,sessionStorage),以便會話管理器可以重新打開它們。會話cookie是在會話關閉時被丟棄的cookie。換句話說,會話cookie是非持久性的。盡管會話cookie可以保存會話ID,但是這兩個概念是正交的(意義4;會話cookie可以保存會話ID以外的內容,并且可以將會話ID存儲在持久性cookie中)。


同一集合中是否有兩個不同的視圖取決于瀏覽器。例如,一個瀏覽器可能認為一個會話由一個窗口中的所有選項卡組成;單獨的窗口是單獨的會話。IE8允許用戶通過“新會話”菜單項創建新會話。否則,將在同一會話中打開新的窗口和選項卡。隱私模式還會創建新的會話。


總而言之,瀏覽器會話確實是由瀏覽器設置的,盡管它為用戶提供了多種控制瀏覽器會話的方式:創建新會話,通過瀏覽,保存和還原會話來更改視圖中的歷史記錄和當前頁面。用戶甚至可以通過編輯保存在磁盤上的會話來更改會話數據,盡管這不是瀏覽器提供的功能。這些都與會話劫持無關。服務器會話是由服務器創建和管理的,但是用戶可以(嘗試)通過更改其瀏覽器傳回服務器的會話ID來切換服務器會話,這是會話劫持的基礎。


查看完整回答
反對 回復 2019-11-29
  • 3 回答
  • 0 關注
  • 442 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號