忘记密码漏洞
- 黑客使用抓包工具分析Http请求,在忘记密码找回的时候,需要发送一套短信验证码,如果验证码的数字比较短的时候,很容易使用暴力破解的方式攻击
- 防御手段:
(1)找回密码最好不要是单纯全部都是数字
(2)建议验证码用数字+其他字符混合
(3)如果找回密码接口重试5次以上还是错误,加上图形验证码,避免是机器
(4)配置防止DDOS,限流,限制IP访问,黑名单和白名单 - 在做值的传递的时候,最好不要使用隐藏域----慎用隐藏域。比如我们需要发短信验证码,我们将手机号写在了隐藏域中,如果此时有人将隐藏域中的手机号修改,那么我们就可以在修改的手机中收到验证码,这样子我们就可以修改别人的密码
使用上传文件漏洞格式化服务器硬盘
- 什么是上传文件漏洞?
- 上传文件的时候没有限制格式,导致任意文件都可以上传,如果上传了木马文件(可以执行程序的文件),可能会导致服务器崩溃
- 案例:
在页面中有一个上传图片的功能,在上传图片的时候我们如果没有校验文件格式,我们可以直接上传木马文件直接格式化硬盘的所有的信息。(我们只要访问我们上传的木马文件,该文件就会执行)
- 如何防御上传文件漏洞?
(1)对文件的格式进行限制,只允许某些格式的上传
(2)对文件的格式进行校验,前端跟服务器都要进行校验(前端校验其扩展名,服务器校验扩展名,Content_Type等)
(3)将上传目录放置到项目工程目录之外,当做静态资源文件路径,并且对文件的权限进行设定,进制文件下的执行权限,这样即使上传了木马文件也没有办法执行。
(4)静态服务器和动态服务器分开执行,这样上传来的脚本等没有环境去执行,采用Nginx+Tomcat实现动静分离
(5)服务器不要有热部署
其他补充:
(1)一旦程序报错,直接使用全局捕获异常返回统一的错误
(2)信息的传递不要使用userId等主要信息,可以使用token传递
(3)不要使用sql拼接,即${}的形式,使用#{}的形式
(4)不要在jsp中写html注释,最好写java注释,就是说jsp中的注释不能让用户看到,即不要用<! --注释内容–>(用户通过F12可以看到,会发到客户端),使用< %–注释内容–%>(不会发到客户端)