使用MyBatis作为持久化层,不使用SQL拼装,防止SQL注入。
在模版中对输出的内容做HTML转义,防止跨站脚本攻击。
记录所有登录成功和登录失败的日志,助于排查可以登录操作;登录失败超过3次(可设置)后须提供验证码才能继续登录,防止暴力尝试密码;可以禁用可疑账户,阻止其继续登录。
用户登录后会自动销毁登录前的会话ID,避免固定会话攻击。
数据库保存用户密码时,不直接保存明文,而是使用国密算法对密码进行PBKDF2WithHmacSM3+salt+pepper加密。这样即使获取到数据库中密码字段的数据,也无法得到真正的密码。
用户访问具体数据时,对引用的数据进行权限判断,不允许访问未经授权的数据。
对需要权限的操作都进行权限判断,而不仅仅控制可见的用户界面。
程序在做重定向时,检查重定向地址是否合法,禁止重定向至系统外的URL地址。
系统使用安全记录良好的组件,并及时更新,避免因使用的组件出现漏洞而遭受攻击。