<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    Cookie、Session機制詳解及PHP中Session處理

    VSole2022-05-05 06:42:32

    會話機制

    Cookie/Session
    在web應用中,常用的會話追蹤機制是Cookie和Session。而Cookie是通過在瀏覽器里記錄確定用戶身份,Session在服務器端記錄信息確定用戶身份。
    Http協議
    http協議本身是無狀態的,也就是說我們無法通過http協議來確定該次請求的用戶身份,所以,通常的做法是需要通過Cookie和Session機制確定會話用戶身份。

    Cookie

    簡介:
    Cookie是存儲在客戶端的,用來記錄信息。其實單純來說,僅采用Cookie也是可以追蹤用戶會話,只是這樣安全性會大大降低(例如:最粗暴的將用戶登錄的用戶名、密碼寫入cookie,每次請求驗證用戶名密碼,根據驗證結果決定是否允許進行接下來的業務處理)。
    Cookie創建及如何發送給客戶端:
    cookie創建:cookie由服務端創建(也就是服務端決定要往cookie寫入什么內容)。在PHP中,當setCookie函數執行后,默認會將cookie寫入到客戶端中。
    setCookie('name', 'nameValue');
    echo 'success';
    

    當在瀏覽器中執行上述代碼時,會將cookie寫入到瀏覽器中。

    Cookie使用
    cookie一般是在登錄成功后,完成寫入,將其返回給客戶端。客戶端下次請
    求時會帶入cookie,服務端通過獲取cookie內容進行驗證會話信息。

    Cookie有效期及跨域問題:
    cookie是可以設置有效期的,默認是瀏覽器關閉時,cookie自動失效。
    cookie存在跨域問題(瀏覽器同源策略保護),例如,childB.B.com和Child2B.B.com雖然都在一級域名B.com下,但是由于二級域名不同,所以cookie也無法在Child2B.B.com下使用(這也是為什么前后端分離項目中,不采用cookie、session機制的原因)。
    跨域問題解決:
    跨域問題可以通過在服務端設置允許cookie訪問的域名或在nginx中配置允許跨域域名Cookie跨域解決方案
    header('Access-Control-Allow-Origin: Child2B.B.com');
    header('Access-Control-Allow-Credentials: true');
    

    Session:

    簡介:
    在服務端保存用戶信息,追蹤用戶的會話記錄。
    原理分析:
    當瀏覽器通過http協議請求服務端時,服務端會為用戶創建session。在創建session時,會檢查是否包含一個唯一的會話id,即sessionId。
    (1)若有該sessionId,則表示已經為用戶創建過會話,通過sessionId從session中獲取用戶信息,執行下面的業務處理;
    (2)若沒有該sessionId,則表示還未創建過會話,服務端會創建session,為該session關聯唯一的sessionId,將sessionId返回客戶端。
    通常情況下,session會和cookie配合使用,即將session生成的sessionId通過cookie寫入瀏覽器。瀏覽器在下次請求時,帶入cookie,服務端通過cookie獲取sessionId,進而獲取session信息。
    禁用cookie的sessionId Url重寫:
    當瀏覽器禁用cookie時,是沒法通過cookie帶入sessionId的,可以通過將sessionId附著在url中傳入服務端。
    在PHP中當php.ini中的session.use_trans_sid = 1時,若瀏覽器禁用cookie會自動將sessionId附著在url上進行傳遞。
    PHP對session的處理方式:
    PHP默認通過文件的形式存儲session,即生成sessionId時,相應服務器也會生成一個sess_sessionId的文件,在該文件中會存儲session信息。
    PHP支持通過session_set_save_handler()函數設置支持的session驅動session_set_save_handler()函數,要求自定義的session處理類需要實現SessionHandlerInterface接口(或者是已經實現了該接口的sessionHandler)。
    例如:在tp5中,實現了三種驅動方式:redis/memcache/memcached。

    會話機制小結:

    總得來說,由于http協議的無狀態,所以需要單獨的會話追蹤機制來保持用戶會話,session是在服務端存儲用戶信息追蹤會話,cookie是在客戶端存儲用戶信息。session在服務端生成sessionId,通常做法是需要通過瀏覽器cookie來存儲,配合使用來確定用戶會話信息。

    如侵權請私聊公眾號刪文

    cookiesession
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    會話機制Cookie/Session:在web應用中,常用的會話追蹤機制是CookieSession
    跨語言移植一直是技術領域內難以解決的問題,需要解決語言之間的約束,好在先前我們成功使用 Go 實現了 IIOP 協議通信,有了前車之鑒,所以這次我們將繼續使用跨語言方式實現 Flask Session 偽造。本文以 Apache Superset 權限繞過漏洞(CVE-2023-27524) 為例講述我們是如何在 Go 中實現 Flask 框架的 Session 驗證、生成功能的。
    它最初于2002年在Microsoft Internet Explorer 6 SP1中實現,以防止敏感信息被盜。所有現代的后端語言和環境都支持設置HttpOnly標志。該標志防止通過中間人攻擊盜竊cookie 。請注意,只能在HTTPS連接期間設置此標志。此標志用于幫助防止跨站點請求偽造攻擊。例如,在2019年,Google Chrome瀏覽器更改了SameSite cookie的默認行為。即使cookie標志對于許多攻擊有效,也不能用作跨站點腳本的補救措施。攻擊者可能想出辦法來規避限制。
    淺析JWT安全問題
    2022-08-08 15:44:18
    觀察確定為JWT,將payload處字符base64解碼得??把sub的wiener修改為administrator,重新傳參??成功越權,然后就是刪除用戶即可?然后前往jwt.io生成我們需要的的jwt,把sub和secret進行修改??重新傳包,成功?
    花點時間弄懂XSS攻擊
    2022-06-10 22:31:38
    由于直接在用戶的終端代碼執行,惡意代碼能夠直接獲取用戶的信息,利用這些信息冒充用戶向網站發起攻擊請求.XSS攻擊有哪些類型?反射型XSS反射型XSS漏洞常見于通過URL傳遞參數的功能,如網站搜索,跳轉等。如何防御反射型XSS攻擊對url查詢參數進行轉義后再輸出到頁面。
    二. Apifox 做的改進1. Apifox的整體功能定位Apifox 是 API 文檔、API 調試、API Mock、API 自動化測試一體化協作平臺。支持 Markdown 所見即所得地編寫非 API 文檔的普通文檔。API 文檔支持密碼保護和生效時間,可生成多份不同內容和權限的文檔。支持綁定接口,接口發生變化時,自動更新測試用例。支持執行循環次數和用例之間設置時間間隔。
    程序直接檢查是否存在該sessionid文件,但是如果將sessionid構造為指定路徑下已存在的文件,即可繞過身份驗證邏輯缺陷2:在upload.cgi文件sub_10DC4函數中,存在邏輯缺陷漏洞。
    起源是在某個數據包里看到url=這個關鍵字,當時第一想到會不會有SSRF漏洞。
    [VNCTF2022]gocalc0復現
    2022-05-07 16:02:38
    看雪論壇作者ID:H3h3QAQ
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类