白帽子兵法
- Secure By Default 原則
- 黑名單葵礼、白名單
- 端口,默認(rèn)端口
- 在網(wǎng)站的生產(chǎn)環(huán)境服務(wù)器上,軟件
- 用戶提交
- 通配符*
- 最小權(quán)限原則
- 黑名單葵礼、白名單
- Defense in Depth 原則(縱深防御原則)
- 數(shù)據(jù)與代碼分離原則
- 不可預(yù)測性原則
- 不可預(yù)測性(Unpredictable),能有效地對抗基于篡改割粮、偽造的攻擊
客戶端腳本安全
瀏覽器安全
- 同源策略(Same Origin Policy)
- Different protocol,host,port
- 跨域資源共享CORS(Cross-origin resource sharing)
- HTTP頭
- Access-Control-Allow-Origin: *
- 瀏覽器沙箱(Sandbox)
- 惡意網(wǎng)址攔截
- https://developers.google.com/safe-browsing/
- EV SSL 證書(Extended Validation SSL Certificate)
- 高速發(fā)展的瀏覽器安全
- IE8->XSS Filter
- Firefox->Content Security Policy(CSP)
- 畸形URL
跨站腳本攻擊(XSS, Cross Site Script)
黑客通過"HTML注入"篡改了網(wǎng)頁,插入了惡意的腳本,從而在用戶瀏覽網(wǎng)頁時,控制用戶瀏覽的一種攻擊
- IE8->XSS Filter
- Firefox->Content Security Policy(CSP)
跨站請求偽造(CSRF, Cross Site Request Forgery)
攻擊者利用用戶的身份操作用戶賬戶的一種攻擊方式
- 驗(yàn)證碼
- Anti CSRF Token(保密性,隨機(jī)性)
點(diǎn)擊劫持(ClickJacking)
服務(wù)器端應(yīng)用安全
注入攻擊
本質(zhì)是把用戶輸入的數(shù)據(jù)當(dāng)做代碼執(zhí)行
- 用戶能夠控制輸入
- 原本程序要執(zhí)行的代碼,拼接了用戶輸入的數(shù)據(jù)
SQL注入
- 使用預(yù)編譯語句,綁定變量
- 檢查數(shù)據(jù)類型
- 使用安全函數(shù)
文件上傳漏洞
- 文件上傳的目錄設(shè)置為不可執(zhí)行
- 判斷文件類型
- MIME Type
- 后綴檢查
- 使用隨機(jī)數(shù)改寫文件名和文件路徑
- 單獨(dú)設(shè)置文件服務(wù)器的域名
分布式拒絕服務(wù)(DDOS, Distributed Denial of Service)
利用合理的請求造成資源過載,導(dǎo)致服務(wù)不可用
- 網(wǎng)絡(luò)層DDOS(偽造大量的源IP地址)
- 應(yīng)用層DDOS(真實(shí)的IP地址)
- 限制請求頻率
- 代理服務(wù)器
- CAPTCHA(Completely Automated Public Turing Test to Tell Computers and Humans Apart,全自動區(qū)分計(jì)算和人類的圖靈測試)
密碼
密碼
- 強(qiáng)Hash算法
- No Base64編碼浮毯、對稱加密,Yes 單向Hash
- MD5消息摘要算法(Message-Digest Algorithm),SHA安全散列算法(Secure Hash Algorithm),彩虹表(rainbow table)
- 加鹽(salt),增加隨機(jī)性,防止彩虹表
- BCrypt,強(qiáng)Hash算法,專門為密碼存儲而設(shè)計(jì)的算法
- No 明文顯示、發(fā)送楼吃、存儲
- No 限制
重置密碼
- 找回密碼就是讓用戶重置密碼
- 可以隨機(jī)生成一個新的 一次性的(這點(diǎn)很重要)密碼,然后把這個密碼發(fā)送給用戶
- 重置密碼之前,如果用戶提供了錯誤的郵件地址,不要提示他
- 重置密碼的時候,識別用戶最好依靠郵件地址,而不是用戶名
- 如果條件允許,重置密碼之前,最好請用戶回答一些個人問題,或者采用 2FA 驗(yàn)證,比如短信驗(yàn)證碼
- 最后,不要忘了記錄 IP 地址,在郵件里面告訴用戶,哪個 IP 地址在申請重置你的密碼