Files
build-web-application-with-…/zh-tw/09.0.md
2019-06-22 23:41:28 +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)
## links
* [目錄](<preface.md>)
* 上一章:[第八章總結](<08.5.md>)
* 下一節:[預防 CSRF 攻擊](<09.1.md>)