Files
build-web-application-with-…/zh-tw/09.0.md
2019-02-26 01:40:54 +08:00

21 lines
2.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 9 安全與加密
無論是開發Web應用的開發者還是企圖利用Web應用漏洞的攻擊者對於Web程式安全這個話題都給予了越來越多的關注。特別是最近CSDN密碼洩露事件更是讓我們對Web安全這個話題更加重視所有人都談密碼色變都開始檢測自己的系統是否存在漏洞。那麼我們作為一名Go程式的開發者一定也需要知道我們的應用程式隨時會成為眾多攻擊者的目標並提前做好防範的準備。
很多Web應用程式中的安全問題都是由於輕信了第三方提供的資料造成的。比如對於使用者的輸入資料在對其進行驗證之前都應該將其視為不安全的資料。如果直接把這些不安全的資料輸出到客戶端就可能造成跨站指令碼攻擊(XSS)的問題。如果把不安全的資料用於資料庫查詢那麼就可能造成SQL注入問題我們將會在9.3、9.4小節介紹如何避免這些問題。
在使用第三方提供的資料包括使用者提供的資料時首先檢驗這些資料的合法性非常重要這個過程叫做過濾我們將在9.2小節介紹如何保證對所有輸入的資料進行過濾處理。
過濾輸入和轉義輸出並不能解決所有的安全問題我們將會在9.1講解的CSRF攻擊會導致受騙者傳送攻擊者指定的請求從而造成一些破壞。
與安全加密相關的能夠增強我們的Web應用程式的強大手段就是加密CSDN洩密事件就是因為密碼儲存的是明文使得攻擊拿手函式庫之後就可以直接實施一些破壞行為了。不過和其他工具一樣加密手段也必須運用得當。我們將在9.5小節介紹如何儲存密碼,如何讓密碼儲存的安全。
加密的本質就是擾亂資料某些不可恢復的資料擾亂我們稱為單向加密或者雜湊演算法。另外還有一種雙向加密方式也就是可以對加密後的資料進行解密。我們將會在9.6小節介紹如何實現這種雙向加密方式。
## 目錄
![](images/navi9.png?raw=true)
## links
* [目錄](<preface.md>)
* 上一章: [第八章總結](<08.5.md>)
* 下一節: [預防CSRF攻擊](<09.1.md>)