本文主要為大家介紹了Laravel中Sessionid處理機制的相關資料,文中透過範例程式碼介紹的非常詳細,對大家的學習或工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。希望對大家有幫助。
前言
本文主要介紹給大家介紹了Laravel中Sessionid處理機制的相關內容,分享出來供大家參考學習,以下話不多說了,來一起看看詳細的介紹吧。
在Laravel 的設定檔config/session.php 中可以設定Session Cookie Name,例如這個專案中設定名稱為「sns_session」:
/* |-------------------------------------------------------------------------- | Session Cookie Name |-------------------------------------------------------------------------- | | Here you may change the name of the cookie used to identify a session | instance by ID. The name specified here will get used every time a | new session cookie is created by the framework for every driver. | */ 'cookie' => 'sns_session',
我們可以看到刷新頁面,查看cookie ,會發現一個名稱為sns_session 的cookie,名字就是我們自訂的。
這個 sessionid 就是 cookie 和 session 連結的橋樑,伺服器透過這個 sessionid 判斷來自哪個客戶端的請求。
Laravel 的 sessionid 每次刷新發生變化
但是,每次刷新頁面,這個 cookie 值都會改變!那麼這樣伺服器如何保持會話呢?因為你的 sessionid 總是在變。
Laravel 對cookie 進行加密
我們在vendor/laravel/framework/src/Illuminate/ Session/Store.php 的save 方法中除錯一下,印出這裡的呼叫堆疊:
/** * {@inheritdoc} */ public function save() { $this->addBagDataToSession(); $this->ageFlashData(); $this->handler->write($this->getId(), $this->prepareForStorage(serialize($this->attributes))); $this->started = false; dd(debug_backtrace(DEBUG_BACKTRACE_PROVIDE_OBJECT,5)); }
每次刷新頁面,這個Store 物件的id 屬性其實是沒有變化的,這個屬性就是sessionid 這個cookie 的值。也就是說,sessionid 的值並不是每次都發生變化,而是寫 cookie 的時候,值發生了變化。
在vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php 中的encrypt 方法找到了原因,這個中間件對所有cookie 值都進行了加密處理,它被包含在web 中間件。
protected function encrypt(Response $response) { foreach ($response->headers->getCookies() as $cookie) { if ($this->isDisabled($cookie->getName())) { continue; } $response->headers->setCookie($this->duplicate( $cookie, $this->encrypter->encrypt($cookie->getValue()) )); } return $response; }
而這種加密方式是每次加密的結果都不同,所以表現為 sessionid 的值每次都發生了變化,而實際上並沒有改變。在需要用到這個 cookie 的時候會被解密回去。
Laravel 框架這樣設計的目的可能是為了防止 session 劫持吧!考慮還是比較全面的!
其他補充知識
原生PHP 設定session 名稱
session_name() 函數:
<?php /* 设置会话名称为 WebsiteID */ $previous_name = session_name("WebsiteID"); echo "The previous session name was $previous_name<br />"; ?>
session_name()
函數傳回目前會話名稱。 如果指定 name 參數, session_name()
函數會更新會話名稱, 並傳回 原來的 會話名稱。
請求開始的時候,會話名稱會被重置並且儲存到 session.name
設定項。 因此,要設定會話名稱,那麼對於每個請求,都需要在呼叫session_start()
或session_register()
函數之前呼叫session_name()
函數。
COOKIE和SESSION的區別和關係
#COOKIE保存在客戶端,而SESSION則保存在伺服器端
從安全性來講,SESSION的安全性更高
#從保存內容的類型的角度來講,COOKIE只保存字符字串(及能夠自動轉換成字串)
從保存內容的大小來看,COOKIE保存的內容是有限的,比較小,而SESSION基本上沒有這個限制
從效能的角度來講,用SESSION的話,對伺服器的壓力會更大一些
SEEION依賴COOKIE,但如果停用COOKIE ,也可以透過url傳遞
相關推薦:
以上是詳解Laravel中Sessionid的處理機制的詳細內容。更多資訊請關注PHP中文網其他相關文章!

phpIdentifiesauser'ssessionSessionSessionCookiesAndSessionId.1)whiwsession_start()被稱為,phpgeneratesainiquesesesessionIdStoredInacookInAcookInAcienamedInAcienamedphpsessIdontheuser'sbrowser'sbrowser.2)thisIdallowSphptpptpptpptpptpptpptpptoretoreteretrieetrieetrieetrieetrieetrieetreetrieetrieetrieetrieetremthafromtheserver。

PHP會話的安全可以通過以下措施實現:1.使用session_regenerate_id()在用戶登錄或重要操作時重新生成會話ID。 2.通過HTTPS協議加密傳輸會話ID。 3.使用session_save_path()指定安全目錄存儲會話數據,並正確設置權限。

phpsessionFilesArestoredIntheDirectorySpecifiedBysession.save_path,通常是/tmponunix-likesystemsorc:\ windows \ windows \ temponwindows.tocustomizethis:tocustomizEthis:1)useession_save_save_save_path_path()

ToretrievedatafromaPHPsession,startthesessionwithsession_start()andaccessvariablesinthe$_SESSIONarray.Forexample:1)Startthesession:session_start().2)Retrievedata:$username=$_SESSION['username'];echo"Welcome,".$username;.Sessionsareserver-si

利用會話構建高效購物車系統的步驟包括:1)理解會話的定義與作用,會話是服務器端的存儲機制,用於跨請求維護用戶狀態;2)實現基本的會話管理,如添加商品到購物車;3)擴展到高級用法,支持商品數量管理和刪除;4)優化性能和安全性,通過持久化會話數據和使用安全的會話標識符。

本文討論了PHP中的crypt()和password_hash()的差異,以進行密碼哈希,重點介紹其實施,安全性和對現代Web應用程序的適用性。

文章討論了通過輸入驗證,輸出編碼以及使用OWASP ESAPI和HTML淨化器之類的工具來防止PHP中的跨站點腳本(XSS)。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

禪工作室 13.0.1
強大的PHP整合開發環境