1、访问错误页面不要暴露nginx
解决办法配置nginx 错误页面
#2# 软件的版本,nginx 使用最新的稳定版本之前用1.8 容易被攻击
2、上传的图片校验
最开始没有想到修改文件后缀的情况,所以如果修改了文件后缀是上传成功的。
文件名称不要用时间戳,随机字符串比较好。后台只返回文件名,前台展示采取拼接的方式
解决办法:
/** 校验是否是jpg 或者png 的图片 是返回true */ public static boolean checkImgFile(MultipartFile tempMultipartFile) throws IOException { // 过滤非jpg,png格式的文件 if (!(tempMultipartFile.getContentType().toLowerCase().equals("image/jpg") || tempMultipartFile.getContentType().toLowerCase().equals("image/jpeg") || tempMultipartFile.getContentType().toLowerCase().equals("image/png"))) { return false; } else { ImageInputStream iis = ImageIO.createImageInputStream(tempMultipartFile.getInputStream()); Iterator iter = ImageIO.getImageReaders(iis); if (!iter.hasNext()) {//文件不是图片 return false; } BufferedImage bi = ImageIO.read(tempMultipartFile.getInputStream()); if(null == bi){ return false; } return true; } }
3、参数校验
我们前端往往都做了参数校验,后台也应该做参数校验。
没有相应的参数,不能够保存。如果有大小的后台也要校验,
比如等级开始的积分不能大于结束的积分
4、权限问题
1.接口的调用必须使用token
2.有些接口是需要传入用户ID的
token 和用户id 保持一致
这个时候需要校验传入的token(表示的用户)与实际操作的用户(传入的userId)要一致
否则就是传入了A 的token userId 是B的,修改密码会出现
解决办法就是获取请求参数,如果传入了userId 那么就要比较token
5、发帖bbs 使用敏感词过滤工具类
6、搭建测试环境的过程要记录
安装了哪些服务,什么版本,看的什么文章要记录。
因为后面生产环境也会需要
7、发短信接口短信不要在response里返回,对ip做次数限制
8、细节的问题
修改密码时候新密码也要进行规则校验
手机号做简单正则校验,是11位数字,1开头就可以。、、
pentest 报告我并没有详细看。。给自己耽误了不少时间