從PHP了解cookie/session原理

閱讀時間約 2 分鐘
如上圖程式碼,session_start();
其實就是在client端建立unique id的cookie。
如下圖,http response header中會夾帶Set-Cookie。
如下圖,可以從開發者工具清楚看到cookie被設定上去!
key是 PHPSESSID, value則是不重複的session id.
此外會在server disk建立這個session id的檔案,裡面則是放我們設定的key value,由於每個http request瀏覽器都會在header放入cookie, 因此這個session id會被帶到server, 一旦server比對發現有這個session id的檔案時,就能取出指定的key value值了! 所以其實我們可以自己實作session呢! 不一定要用php提供的!
不過如果user把瀏覽器的cookie功能關掉,就會造成每次的http request都不會再帶cookie了,而且php中session_start(); 也會沒辦法建立cookie,因此session功能就會失效,因為cookie被關掉了!
接著我重新整理一下網頁,request/response header如下:
可以發現response header中已經沒有Set-Cookie了,因為已經有設定了!
由於第一次網頁load後已經有設定cookie了,所以往後每次的request header都會帶上Cookie。
#note 如何避免session id被挾持?
1. 設定cookie HttpOnly:
一般我們會設定cookie為HttpOnly(php server可以設定),也就是設定不能透過javascript來存取cookie,這是為了避免被XSS攻擊,攻擊者可以透過javascript來拿到cookie,因此就會被拿到session id,這是相當危險的!
所以網站防禦XSS攻擊是很重要的呢! 一旦有XSS漏洞,就有可能被偷走cookie中設定的session id!
2. 關閉phpinfo頁面
phpinfo裡面包含了cookie資訊,如果沒有關閉這個頁面,就會給駭客有機會拿到cookie!
3.改為https
https也可以達到防禦的效果,傳輸過程中都透過SSL加密,是很難被竊取資料的!
為什麼會看到廣告
21會員
161內容數
留言0
查看全部
發表第一個留言支持創作者!
Vic Lin的沙龍 的其他內容
jQuery ajax & php example 第一種方式 使用application/x-www-form-urlencoded 第二種方式 使用application/json
JavaScript在ES6新增了let, const等宣告變數的方式,其中let, const是block scope的,而var則是function scope。
promise是ES6才有的,它是一種非同步的技術,使用它除了可以在background處理一些事情以外,還可以增加程式碼的可維護性。
jQuery ajax & php example 第一種方式 使用application/x-www-form-urlencoded 第二種方式 使用application/json
JavaScript在ES6新增了let, const等宣告變數的方式,其中let, const是block scope的,而var則是function scope。
promise是ES6才有的,它是一種非同步的技術,使用它除了可以在background處理一些事情以外,還可以增加程式碼的可維護性。
你可能也想看
Google News 追蹤
Thumbnail
本專欄將提供給您最新的市場資訊、產業研究、交易心法、精選公司介紹,以上內容並非個股分析,還請各位依據自身狀況作出交易決策。歡迎訂閱支持我,獲得相關內容,也祝您的投資之路順遂! 每年 $990 訂閱方案👉 https://reurl.cc/VNYVxZ 每月 $99 訂閱方案👉https://re
Thumbnail
進入物件導向設計的實戰階段,我們通過建立人力資源管理功能來實踐理論知識。透過這些實作練習,能夠深化對物件導向概念的理解,並學會如何在實際開發中應用這些概念。
Thumbnail
在物件導向程式設計的進階階段,學生將學習繼承、介面、抽象類別等核心概念。繼承允許類別共享屬性和方法,介面確保實現類別提供特定的方法實現,而抽象類別定義了基本結構供子類別擴展。這些知識點有助於提升程式碼的重用性、擴展性和維護性。
Thumbnail
本階段深掘PHP中類別與物件的應用,從基本定義到屬性與方法的運用,並特別著重於訪問控制和靜態成員的概念。學生將學會如何有效地利用公開、保護、私有屬性,以及如何在不實例化的情況下透過類別名稱直接訪問靜態屬性和方法,進一步鞏固物件導向程式設計的核心知識。
Thumbnail
本階段介紹物件導向程式設計(OOP)基礎,從OOP概念、類別與物件基本原理,到PHP中類別與物件的應用,並深入探討封裝、繼承等OOP特性,最後以實際練習加強理解。此階段為學生掌握PHP OOP打下堅實基礎。
Thumbnail
從基本的OOP概念、PHP基礎回顧,到類別與物件的深入探討、進階概念如繼承、介面與抽象類別,再到實戰應用與設計模式入門,最後以課程總結與未來學習資源提供作結。此課程架構確保學生能夠從基礎到進階,全面掌握PHP物件導向程式設計的核心概念與技術。
Thumbnail
外資對台股的影響真的很大,當美國要收割全世界的韭菜時,可真的不是說說而已,美國透過美元輸出自己的債務與通膨,讓全世界的國家一起幫他扛著債務與通膨,而他老大哥還是日夜笙歌,走路有風,而小老弟們辛苦工作,在後面買單.......
Thumbnail
你們認識有關西班牙憲法的歷史嗎? 你知道西班牙第一部憲法是1812年在Cadiz訂定的嗎? 你知道現在西班牙國王飛利浦VI世的家族歷史成員波旁王朝都有哪些秘辛嗎? 大嬸的這篇文章都有答案喔!
Thumbnail
時序就這樣步入這一年的最後一個月,充滿著感恩與耶誕氣息的月份,特別是今年在疫情的干擾之下,全球都陷入了一股混亂的節奏,致使今年的耶誕都不耶誕了。
Thumbnail
即將開打的次世代主機大戰,微軟與Sony都各自推出了最強的新產品。不過,從微軟所釋出的新一代主機規劃,我們可以看出,已經轉換成雲端DNA的這個軟體巨人,現在對於遊戲市場的主機大戰,已經有了完全不一樣的想法與戰略。
Thumbnail
本專欄將提供給您最新的市場資訊、產業研究、交易心法、精選公司介紹,以上內容並非個股分析,還請各位依據自身狀況作出交易決策。歡迎訂閱支持我,獲得相關內容,也祝您的投資之路順遂! 每年 $990 訂閱方案👉 https://reurl.cc/VNYVxZ 每月 $99 訂閱方案👉https://re
Thumbnail
進入物件導向設計的實戰階段,我們通過建立人力資源管理功能來實踐理論知識。透過這些實作練習,能夠深化對物件導向概念的理解,並學會如何在實際開發中應用這些概念。
Thumbnail
在物件導向程式設計的進階階段,學生將學習繼承、介面、抽象類別等核心概念。繼承允許類別共享屬性和方法,介面確保實現類別提供特定的方法實現,而抽象類別定義了基本結構供子類別擴展。這些知識點有助於提升程式碼的重用性、擴展性和維護性。
Thumbnail
本階段深掘PHP中類別與物件的應用,從基本定義到屬性與方法的運用,並特別著重於訪問控制和靜態成員的概念。學生將學會如何有效地利用公開、保護、私有屬性,以及如何在不實例化的情況下透過類別名稱直接訪問靜態屬性和方法,進一步鞏固物件導向程式設計的核心知識。
Thumbnail
本階段介紹物件導向程式設計(OOP)基礎,從OOP概念、類別與物件基本原理,到PHP中類別與物件的應用,並深入探討封裝、繼承等OOP特性,最後以實際練習加強理解。此階段為學生掌握PHP OOP打下堅實基礎。
Thumbnail
從基本的OOP概念、PHP基礎回顧,到類別與物件的深入探討、進階概念如繼承、介面與抽象類別,再到實戰應用與設計模式入門,最後以課程總結與未來學習資源提供作結。此課程架構確保學生能夠從基礎到進階,全面掌握PHP物件導向程式設計的核心概念與技術。
Thumbnail
外資對台股的影響真的很大,當美國要收割全世界的韭菜時,可真的不是說說而已,美國透過美元輸出自己的債務與通膨,讓全世界的國家一起幫他扛著債務與通膨,而他老大哥還是日夜笙歌,走路有風,而小老弟們辛苦工作,在後面買單.......
Thumbnail
你們認識有關西班牙憲法的歷史嗎? 你知道西班牙第一部憲法是1812年在Cadiz訂定的嗎? 你知道現在西班牙國王飛利浦VI世的家族歷史成員波旁王朝都有哪些秘辛嗎? 大嬸的這篇文章都有答案喔!
Thumbnail
時序就這樣步入這一年的最後一個月,充滿著感恩與耶誕氣息的月份,特別是今年在疫情的干擾之下,全球都陷入了一股混亂的節奏,致使今年的耶誕都不耶誕了。
Thumbnail
即將開打的次世代主機大戰,微軟與Sony都各自推出了最強的新產品。不過,從微軟所釋出的新一代主機規劃,我們可以看出,已經轉換成雲端DNA的這個軟體巨人,現在對於遊戲市場的主機大戰,已經有了完全不一樣的想法與戰略。