java web项目安全设计

准备知识
BurpSuite工具–安全测试使用

安全设计要点

1、 使用https协议访问
2、 登录页面密码输入框关联密码控件&键盘–敏感信息加密传输至后台,防止中途被截取
3、登录页面增加一次性图形验证码–仅能验证一次,验证后从session立即删除该key
4、禁止同一账户多处登录–以shiro框架做权限管理为例,实现方式参考我的另一篇文章《shiro框架实现单点登录》
5、sessionId不能固定–shiro框架有sessionId固定问题,有安全隐患,解决方法如下

         // 丢弃老的session,重新登录生成sessionID,解决session fixed问题
            session.stop();
            user.login(token);

6、短信防止频繁发送(短信防重放)
恶意用户获取短信接口,可通过重放数据包,实现短信无限制发送,可能造成严重后果。
解决方法:将手机号放进缓存中,设置有效期一分钟(具体有效期以业务需求为准)
7、权限设计到按钮级别
避免不要过粗,尽量将权限细化到按钮级别,便于控制不同角色的权限
8、业务上注意防止越权操作
校验需要操作的数据所有权是否跟当前登录用户的一致
9、上传文件避免存储型XSS
例如上传excel文件,恶意用户在excel的几个字段中添加js代码:,可能造成严重后果。
解决方法:使用正则表达式等方法严格校验用户输入的内容是否符合参数格式&内容要求.
10、防止CSRF
例如修改密码功能:恶意用户可以构造相应的html页面,供用户访问,用户一旦访问到该URL,便会使用自己浏览器中的cookie向服务器发送修改密码的请求。
例如:
某用户登陆帐号后,访问我们构造的网站
java web项目安全设计_第1张图片

网页源代码如下:
java web项目安全设计_第2张图片

点击submit request后,即可成功修改了自己的密码:
java web项目安全设计_第3张图片

11、文件上传时,尽量做病毒扫描

你可能感兴趣的:(设计与重构)