NetSecurity 板


LINE

2017.W11 - Cookie vs Session > 就算今天是抱抱星期二 我還是要稱今天是 Pi-Day ## 前言 ## 雖然是老梗 但是還是替大家複習一下 Cookie 跟 Session 的差別 不然下次搞混真的會讓人無言 ## 內容 ## 在提到 Cookie 與 Session 之前 需要先了解一下 HTTP 的架構 HTTP[0] 是一種廣泛使用的網路協定 (如果你透過網頁瀏覽 PTT 那就是在使用 HTTP) 目前最廣泛使用的是用 RFC 2616[1] 的 HTTP/1.1 已經完成的 RFC 7540 (HTTP/2) 則有機會成為新的標準 在 HTTP 的世界當中 請求本身是無狀態的 (stateless) 這表示任意兩個請求之間 本身是沒有關聯 (儲存狀態) 但現在的網路使用中 (排除匿名瀏覽) 網站都可以記錄你上次的 1. 瀏覽紀錄 2. 搜尋結果 3. 登入帳號 4. ... 這就跟 HTTP 的無狀態特性相違背 (?) 而 Cookie 就是處理這個需求的產物 Cookie 是定義在 RFC 2109 的一個實作 本身儲存一個特殊的字串 (有大小限制) 在瀏覽網頁的時候一併送給網頁伺服器 而伺服器會根據當初設計的邏輯做特定的處理 像是 ptt.cc 就會利用 over18 來記錄是否點擊過已滿 18 歲的紀錄 在引入 Cookie 的概念後 HTTP 就有了狀態的特性 但是明眼人一看就會發現問題:這個 Cookie 似乎隨便帶入都可以 假如有一個神奇的程式設計師 (我稱之為 JW) 他設計了一個邏輯 1. 如果請求中沒有 age 則跳出輸入年齡的視窗 2. 如果請求中有 age 這個 Cookie 則顯示 age 的內容 Cookie 本身因為是使用者可控的內容 所以伺服器永遠無法保證這個內容的合法性 這裡的合法性包含了正確性與內容不被修改 所以如果把帳號/密碼資訊 放到 Cookie 當中就是一個 十分好的巧思 另一方面 Session[2] 則是一個 (相對) 用來保證安全的 Cookie 在實務上 Session 跟 Cookie 一樣都放在請求當中 內容當然也可以被使用者控制、修改、竊取 然而 Session 本身在伺服器當中還會做額外的驗證 這裡的驗證可以包涵:來源 IP (REMOTE_ADDRESS)、User Agent [3] 等 而 session 本身並不太帶有任何的敏感資訊 (像是帳號內容 如果沒有額外的巧思...) 相反的 Session 一個跟伺服器端的資料的對應關係 可以想像成: 伺服器已經知道帳號 S 登入了 並且對應到一個 Session ID 是 5538 當只有 IP 位址從 1.2.3.4 的請求 才會做 1-1 的對應 其他的則當作是無效 Session ## 同場加映 ## 有興趣的人 也可以複習一下 Encoding、HASH、Encryption 之間的差異 在工作的時候 真的會有神奇的工程師混用這三者... [0]: https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol [1]: https://tools.ietf.org/html/rfc2616 [2]: https://en.wikipedia.org/wiki/Session_(computer_science) [3]: https://en.wikipedia.org/wiki/User_agent --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.193.122.171
※ 文章網址: https://webptt.com/m.aspx?n=bbs/NetSecurity/M.1489506440.A.4FC.html
1F:推 supermario85: 感謝分享,謝謝 03/15 07:43
2F:推 tiefblau: 順帶一提 會有過期機制~ 03/16 10:59
3F:推 qqdn: 感謝分享 03/18 07:00
4F:推 johnkk6j: 希望下次可以分享一些無線網路的安全機制~~感謝大大~ 03/21 16:20
5F:→ CMJ0121: 樓上的意見我收到了... 給我點時間學學 03/21 22:24
6F:→ CMJ0121: 不然就要看板上出沒的大大分享一下心得了 03/21 22:24







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:BabyMother站內搜尋

TOP