簡體   English   中英

Cookie和存儲中的PHP會話ID

[英]PHP session id in cookie and storage

我已經閱讀了許多有關加密PHP會話數據的評論,以防將其存儲在共享服務器上多個帳戶上可用的臨時目錄中。 但是,即使數據已加密,session_start()仍會生成包含session_id的文件名。 例如,

sess_uivrkk2c5ksnv2hnt5rc8tvgi5

,其中uivrkk2c5ksnv2hnt5rc8tvgi5是我在瀏覽器收到的Cookie中找到的相同會話ID。

通常如何解決此問題/有人可以給我指出一個例子? 我發現的所有簡單示例都僅對數據加密,而不更改文件名。

我只是想看看會發生什么,所以我做了一個SessionHandler包裝器,該包裝器將$ session_id變量傳遞給MD5哈希之后再傳遞給它的父函數,但這沒有用。 相反,我最終得到了兩個文件:一個空白文件(其中session_id作為其名稱的一部分)和一個完整文件(具有MD5的session_id)。 此外,還有close()不接受session_id作為參數的問題,因此我無法將其傳遞給其父級。

編輯:我正在學習有關php會話,這不是一個實時的商業網站,等等。

是的,在某些情況下(例如,配置非常差的服務器-盡管不幸的是確實存在),共享服務器上的會話數據可能被其他人讀取。 試圖通過更改會話文件的名稱來隱藏會話文件沒有任何用處-稱為“通過隱蔽性進行安全性”。 Go和Google這個詞組-通常被描述為矛盾詞。

如果您的問題是如何防止其他客戶在配置錯誤的服務器上訪問您的會話數據,那么明智的選擇(按優先級順序)是:

  • 交換服務提供商
  • 使用自定義會話處理程序將數據存儲在安全的地方(例如數據庫),網絡上有很多示例-質量各不相同
  • 使用自定義會話處理程序來加密數據並使用文件存儲。 同樣,您不需要自己編寫代碼-只需仔細檢查所有候選者

如果要確定您的提供者是否是罪魁禍首-只需看一下FILE的值即可。 看起來好像您有權訪問根文件系統? 編寫一個腳本,嘗試從您的主目錄外部讀取。 如果您不能這樣做,則提供程序可能設置了open_basedir限制(可以解決此問題-Google會再次告訴您如何操作)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM