前段時間看《碼農翻身2》時,裡面講到一部分 安全 相關的知識點很是有趣, 又想起多年前一位朋友推薦的《白帽子講Web安全》,據說這本書是安全領域的聖經,遂跑到圖書館借了這本書,下定決心讀一讀。
這本書前前後後翻了一週的時間,雖然本身我不是從事安全方向的研發,但覺得有一部分知識還是對日常工作有幫助的。
1.在安全圈子裡 素有 白帽 黑帽 一說, 黑帽子是指那些造成破壞的駭客,而白帽子則是研究安全,但不造成破壞的駭客。白帽子均以建設更安全的網際網路為己任。
2.安全三要素:機密性Confidentiality 加密, 完整性Integrity 數字簽名, 可用性Availability Dos拒絕服務攻擊
3.Secure By Default原則,白名單 黑名單的思想,優先使用白名單。 最小許可權原則,不過度授權。 Defense in Depth 縱深防禦 從不同層面不同角度做安全方案。 資料與程式碼分離原則 防注入。
4.不可預測性原則, 隨機值 讓駭客找不到規律
5.同源策略 Same Origin Plicy, 除了瀏覽器 其他Flash 等也有類似的策略
6.瀏覽器沙箱 資源隔離類模組, 隔離資源 讓病毒只在有限的環境中執行, 從而保護大部分系統的安全
7.XSS 跨站指令碼攻擊 Cross Site Scirpt,本來縮寫是Css ,但為了和層疊樣式表 Cascading Style Sheet Css區分,所以安全領域叫 Xss
8.XSS分類: 反射性(誘使人點選),儲存型(惡意js的指令碼儲存到伺服器端), DOM Based Xss(DOM節點結構被惡意修改)
9.XSS攻擊角度: 惡意指令碼,劫持Cookie,偽造GET POST請求,釣魚網站介面,識別使用者瀏覽器,識別使用者安裝軟體,HistoryHack使用者曾經訪問的網站,獲取使用者真實IP
10.XSS構造技巧: 利用字元編碼(不識別字元被吃掉),繞過長度限制(event, localtion.hash,註釋符號), 透過標籤,window.name
11.XSS防禦: HttpOnly, 輸入檢查(前後端都檢查), 輸出檢查(變數輸出到html時轉換)
12.正確的防禦XSS: HtmlEncode,JavascriptEncode, ESAPI.encoder().encodeForCss(), ESAPI.encoder().endcodeForUrl() , Anti_Samy 最好的XssFilter
13.CSRF 跨站點請求偽造 Cross Site Request Forgery. Cookie, P3P
14.CSRF防禦: 驗證碼,RefererCheck:傳送請求時會帶上Referer資訊告訴伺服器上從哪個介面連結過來的。 Anti CSRF Token
15.ClickJacking 點選劫持:視覺的欺騙,拖拽,圖片覆蓋,觸屏劫持. 防禦:禁止跨域的iframe,Http頭 X-Frame-Options
16.跨域訪問的標準: Access-Control-Allow_Origin 等
17.SQL隱碼攻擊, 盲注 除錯, 資料庫內建函式 TimingAttack。 執行命令,攻擊儲存過程, 編碼問題。
18.預編譯SQL,檢查資料型別,使用安全函式 ESAPI.encoder().encodeForSQL
19.XML注入, 程式碼注入。 資料與程式碼分離原則 防注入
20.檔案上傳漏洞, 指令碼被上傳後執行。 策略:檔案上傳目錄不可置信, 白名單判斷檔案型別, 隨機數修改檔名和路徑, 單獨設定檔案伺服器域名
21.Authencication認證, Authorization授權。
22.密碼 必須以不可逆的加密演算法 或者是 單向雜湊函式演算法 加密儲存。 加Salt計算。
23.垂直許可權管理, RBAC基於角色的訪問控制,最小許可權,預設拒絕。
24.水平許可權管理, 資料的許可權控制,暫時沒有統一的解決方案
25.加密演算法 有可能被破解掉 金鑰。
26.偽隨機數, 安全隨機數java.security.SecureRandom
27.DDOS 分散式拒絕服務 Distributed Denial of Service, 利用合理的請求造成資源過載 ,導致服務不可用。 網路層的DDOS,專門的裝置和網路供應商。
28.應用層的DDOS, 限制請求頻率, 合理使用memchache, 負載均衡, 限制每個IP的請求頻率, 驗證碼CAPTCHA Completely Automated Public Turing Test to Tell Computers and Humans Apart,全自動區分計算機和人類的圖靈測試。 (原來有正規的縮寫)。 WebServer加防禦。
29.正規表示式的ReDOS 消耗大量伺服器資源,導致服務效能下降, 發生回溯
30.WebServer 安全, Apache, Nginx, Tomcat(去掉預設的manager應用)