使用 Golang 打造 Web 應用程式
  • Introduction
  • 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 支援
    • 小結
  • 參考資料
Powered by GitBook
On this page
  • 目錄
  • links

Was this helpful?

安全與加密

Previous小結Next預防 CSRF 攻擊

Last updated 4 years ago

Was this helpful?

無論是開發 Web 應用的開發者還是企圖利用 Web 應用漏洞的攻擊者,對於 Web 程式安全這個話題都給予了越來越多的關注。特別是最近 CSDN 密碼洩露事件,更是讓我們對 Web 安全這個話題更加重視,所有人都談密碼色變,都開始檢測自己的系統是否存在漏洞。那麼我們作為一名 Go 程式的開發者,一定也需要知道我們的應用程式隨時會成為眾多攻擊者的目標,並提前做好防範的準備。

很多 Web 應用程式中的安全問題都是由於輕信了第三方提供的資料造成的。比如對於使用者的輸入資料,在對其進行驗證之前都應該將其視為不安全的資料。如果直接把這些不安全的資料輸出到客戶端,就可能造成跨站指令碼攻擊(XSS)的問題。如果把不安全的資料用於資料庫查詢,那麼就可能造成 SQL 注入問題,我們將會在 9.3、9.4 小節介紹如何避免這些問題。

在使用第三方提供的資料,包括使用者提供的資料時,首先檢驗這些資料的合法性非常重要,這個過程叫做過濾,我們將在 9.2 小節介紹如何保證對所有輸入的資料進行過濾處理。

過濾輸入和轉義輸出並不能解決所有的安全問題,我們將會在 9.1 講解的 CSRF 攻擊,會導致受騙者傳送攻擊者指定的請求從而造成一些破壞。

與安全加密相關的,能夠增強我們的 Web 應用程式的強大手段就是加密,CSDN 洩密事件就是因為密碼儲存的是明文,使得攻擊拿手函式庫之後就可以直接實施一些破壞行為了。不過,和其他工具一樣,加密手段也必須運用得當。我們將在 9.5 小節介紹如何儲存密碼,如何讓密碼儲存的安全。

加密的本質就是擾亂資料,某些不可還原的資料擾亂我們稱為單向加密或者雜湊演算法。另外還有一種雙向加密方式,也就是可以對加密後的資料進行解密。我們將會在 9.6 小節介紹如何實現這種雙向加密方式。

目錄

links

上一章:

下一節:

目錄
第八章總結
預防 CSRF 攻擊