用戶登錄是系統(tǒng)中最重要的功能之一,登錄成功就能擁有系統(tǒng)的相關使用權限。所以設計一個安全的登錄流程是十分必要的。保護用戶賬號不被黑客竊取,既是在保護用戶的基本利益,更是在保護網站的信譽和業(yè)務發(fā)展。
流程安全性
安全的登錄流程必須使用 HTTPS 協(xié)議。HTTPS 協(xié)議具有較高的安全性,可以保證數據傳輸過程的安全。雖然有 fiddler 等代理方式可以截取數據,但一般情況下沒有用戶的配合也無法截取。HTTPS 證書可以在阿里云申請,個人站點可以直接用免費版,非常方便。nginx 和 Spring Boot 的配置也非常簡單。
登錄一定要有人機驗證機制,可以防止黑客以暴力破解的方式嘗試登錄。通??梢杂脠D片驗證碼,并且圖片要加干擾線,使用不同的字體、大小寫提高識別難度。目前有打碼平臺和 AI 方式可以識別圖片驗證碼,但是成本比較高。一些大型網站已經在使用新的驗證方式,比如拖動鼠標移動滑塊或者把一個傾斜的圖片扶正,攻擊的難度還是比較高的。
一定要注意防范 XSS、CSRF 攻擊。攻擊者通過在目標網站上注入惡意腳本,可以在其他用戶的瀏覽器上運行腳本。利用這些惡意腳本,攻擊者可獲取用戶的敏感信息。用戶提交的任何數據都要保持懷疑態(tài)度,不能完全信任,該過濾就過濾,該攔截就攔截。國內大型網站,比如淘寶也存在過 CSRF 漏洞,可見大家對這種攻擊形式還比較陌生。
后臺登錄代碼要注意防范 SQL 注入攻擊。如果黑客提交 password or 1 = 1 而后臺沒做 SQL 防注入,只是查詢下數據是否存在,有可能就攻擊成功了。所以 or 1 = 1 有個響亮的名字,叫萬能密碼??峙麓蠹以谧龃髮W作業(yè)的時候,都有這個漏洞吧。
登錄成功后,返回的 cookie 要設置 httponly、secure,這樣就無法通過 js 腳本獲取 cookie,可以防止跨站攻擊,增加爬蟲程序的難度。cookie 有效期根據業(yè)務需求決定,盡量短一些。曾經我也做過爬蟲,爬網銀的時候就處理過很多這樣的 cookie,比普通 cookie 復雜很多。
如果使用手機短信登錄,一定要控制驗證碼的時效性,即驗證碼一次有效 5 分鐘,一分鐘內只能發(fā)送一次。有必要時可以單點登錄,其他設備登錄后,本設備自動失效。也可以使用第三方授權登錄接口,如微信登錄等,優(yōu)化用戶登錄體驗,安全性更好。
密碼安全性
盡量提升密碼強度。一般來說,長度要 8 位以上,必須同時包含數字、小寫字母、大寫字母,建議用戶使用特殊字符。
重置密碼,最好通過郵箱發(fā)送一定時間內有效的重置鏈接,或者手機短信驗證碼,甚至兩者相結合的方法。安全要求特別高的場景,比如股票交易軟件,有的設計了一個單獨的動態(tài)密碼 APP,通過算法比對動態(tài)密碼。密碼保護問題在今天隱私滿天飛的時代背景下,可能已經不那么安全了。
用戶名密碼錯誤提示含糊一些。無論是用戶名還是密碼錯誤,統(tǒng)一提示“用戶名或密碼錯誤”,不要給用戶明確的提示。這樣會在一定程度上讓忘記用戶名的用戶難以登錄,可以輔助一個用戶名找回機制或允許使用郵箱、手機號進行登錄。
不要在瀏覽器中明文保存用戶名、密碼,md5 加密也不行。如果要自動登錄,可以保存 RSA 加密后的密文,通過 cookie 提交密文進行解析來自動登錄。md5 或者 md5(md5) 在今天已經不安全了,黑客的彩虹表可能已經覆蓋了大多數數據了。
保護好用戶
密碼落庫必須加密。CSDN當年使用明文存儲密碼導致被脫褲后完全公開了用戶密碼,給用戶和網站帶來了極大的風險?;诓屎绫砟軌蚝芊奖愕仄平?md5、sha1 等古老算法的密文,建議至少使用 sha256 及以后的算法,并且加密過程加鹽。鹽的長度最好也要在 64 位以上。如果條件允許,給每個用戶設計一個獨有的鹽值,將極大提升安全性。
數據庫要保留用戶的歷史密碼,修改密碼時,不能和前幾次一樣。如果黑客掌握了某個歷史密碼,也可能在用戶改回后恰好就對上了。參考 Google 賬號登錄,修改密碼和 6 個月前的一樣都是不行的。
保留用戶的登錄記錄。時間、ip 都需要。如果本次 ip 和以前的有較大的差別,可以通過郵箱、短信、站內信等向用戶提示,建議用戶修改密碼。用戶長時間沒有登錄,后續(xù)再登錄的時候最好強制修改密碼,并且和歷史密碼不重復。
短時間內登錄失敗,要鎖定用戶。比如失敗 5 次可以鎖定 1 小時,再次失敗鎖定 8 小時,又失敗鎖定 24 小時。鎖定后,用戶可以通過注冊郵箱或手機短信實現解鎖,但一天內也要限制解鎖次數。
即使在用戶登錄后,進行重要操作的時候,也要求用戶重新輸入一次密碼。比如修改密碼、修改綁定郵箱、修改密碼保護問題、有消費行為等,可以防止用戶被 XSS 攻擊后黑客修改重要數據。
總結
本文梳理了設計登錄流程需要考慮的一些關鍵點。世界上沒有絕對安全的系統(tǒng),有價值的網站和應用都是黑客攻擊的重點對象。工作中務必重視安全問題,發(fā)現漏洞及時修復。也要考慮網站數據的重要程度,采取合適的防護措施。
責編AJX
-
網絡安全
+關注
關注
11文章
3516瀏覽量
63563 -
SQL
+關注
關注
1文章
807瀏覽量
46925 -
黑客
+關注
關注
3文章
284瀏覽量
23141
發(fā)布評論請先 登錄
如何保證汽車遠程信息系統(tǒng)的安全性
nios如何保證安全性的
邊緣智能的邊緣節(jié)點安全性
藍牙m(xù)esh系列的網絡安全性
物聯(lián)網應用中BLE安全性怎么保證?
嵌入式實時多任務操作系統(tǒng)的安全性怎么樣?
嵌入式設備如何提高安全性
HarmonyOS學習之三:HarmonyOS 系統(tǒng)安全性
你的應用程序如何保持安全性?
RISC-V如何保證高權限模式程序及外設的安全性?
如何保證Polkadot網絡的安全性
遭遇網絡攻擊后,如何保證用戶登錄的安全性?
評論