使用JPA作為持久化層,不使用SQL拼裝,從源頭杜絕SQL注入的可能。
在所有模版中對輸出的內容做HTML轉義,防止跨站腳本攻擊。
記錄所有登錄成功和登錄失敗的日志,助于排查可以登錄操作;登錄失敗超過3次(可設置)后須提供驗證碼才能繼續登錄,防止暴力嘗試密碼;瀏覽器關閉或停止操作20分鐘后Session自動過期;可以禁用可疑賬戶,阻止其繼續登錄。
用戶登錄后會自動銷毀登錄前的會話ID,避免固定會話攻擊。
數據庫保存用戶密碼時,不直接保存明文,而是對密碼進行sha1+salt加密。這樣即使獲取到數據庫中密碼字段的數據,也無法得到真正的密碼。
用戶訪問具體數據時,對引用的數據進行權限判斷,不允許訪問未經授權的數據。
對需要權限的操作都進行權限判斷,而不僅僅控制可見的用戶界面。
程序在做重定向時,檢查重定向地址是否合法,禁止重定向至系統外的URL地址。
系統使用安全記錄良好的組件,并及時更新,避免因使用的組件出現漏洞而遭受攻擊。