# 6 session和數據存儲
Web開發中一個很重要的議題就是如何做好用戶的整個瀏覽過程的控制,因為HTTP協議是無狀態的,所以用戶的每一次請求都是無狀態的,我們不知道在整個Web操作過程中哪些連接與該用戶有關,我們應該如何來解決這個問題呢?Web里面經典的解決方案是cookie和session,cookie機制是一種客戶端機制,把用戶數據保存在客戶端,而session機制是一種服務器端的機制,服務器使用一種類似于散列表的結構來保存信息,每一個網站訪客都會被分配給一個唯一的標志符,即sessionID,它的存放形式無非兩種:要么經過url傳遞,要么保存在客戶端的cookies里.當然,你也可以將Session保存到數據庫里,這樣會更安全,但效率方面會有所下降。
6.1小節里面講介紹session機制和cookie機制的關系和區別,6.2講解Go語言如何來實現session,里面講實現一個簡易的session管理器,6.3小節講解如何防止session被劫持的情況,如何有效的保護session。我們知道session其實可以存儲在任何地方,6.3小節里面實現的session是存儲在內存中的,但是如果我們的應用進一步擴展了,要實現應用的session共享,那么我們可以把session存儲在數據庫中(memcache或者redis),6.4小節將詳細的講解如何實現這些功能。
## 目錄

## links
* [目錄](<preface.md>)
* 上一章: [第五章總結](<05.7.md>)
* 下一節: [session和cookie](<06.1.md>)
- 目錄
- Go環境配置
- Go安裝
- GOPATH 與工作空間
- Go 命令
- Go開發工具
- 小結
- Go語言基礎
- 你好,Go
- Go基礎
- 流程和函數
- struct
- 面向對象
- interface
- 并發
- 小結
- Web基礎
- web工作方式
- Go搭建一個簡單的web服務
- Go如何使得web工作
- Go的http包詳解
- 小結
- 表單
- 處理表單的輸入
- 驗證表單的輸入
- 預防跨站腳本
- 防止多次遞交表單
- 處理文件上傳
- 小結
- 訪問數據庫
- database/sql接口
- 使用MySQL數據庫
- 使用SQLite數據庫
- 使用PostgreSQL數據庫
- 使用beedb庫進行ORM開發
- NOSQL數據庫操作
- 小結
- session和數據存儲
- session和cookie
- Go如何使用session
- session存儲
- 預防session劫持
- 小結
- 文本文件處理
- XML處理
- JSON處理
- 正則處理
- 模板處理
- 文件操作
- 字符串處理
- 小結
- Web服務
- Socket編程
- WebSocket
- REST
- RPC
- 小結
- 安全與加密
- 預防CSRF攻擊
- 確保輸入過濾
- 避免XSS攻擊
- 避免SQL注入
- 存儲密碼
- 加密和解密數據
- 小結
- 國際化和本地化
- 設置默認地區
- 本地化資源
- 國際化站點
- 小結
- 錯誤處理,調試和測試
- 錯誤處理
- 使用GDB調試
- Go怎么寫測試用例
- 小結
- 部署與維護
- 應用日志
- 網站錯誤處理
- 應用部署
- 備份和恢復
- 小結
- 如何設計一個Web框架
- 項目規劃
- 自定義路由器設計
- controller設計
- 日志和配置設計
- 實現博客的增刪改
- 小結
- 擴展Web框架
- 靜態文件支持
- Session支持
- 表單支持
- 用戶認證
- 多語言支持
- pprof支持
- 小結
- 參考資料