项目语言:java
项目环境:JDK1.8
Web服务器Nginx+tomcat
数据库mysql
前端技术bootstrap+layui+jquery+ajax
后端技术maven+springboot+shiro+jpa+druid+log4j
1、 敏感信息泄露
a) 漏洞描述:敏感信息泄露漏洞,是一种通过提交错误请求,使系统出现异常处理并报错,并且将系统程序、配置、路径、类、方法 等敏感信息泄露出来的漏洞。
b) 解决方案:创建统一错误页面,在后端将异常进行拦截处理,将错误信息存储到日志中,并返回对应的错误描述或状态码。
2、 用户密码未加密传输
a) 漏洞描述:用户登录时,密码进行明码传输,导致请求被拦截获取账号信息。
b) 解决方案:使用不可逆的加密算法,采取salt(盐)+用户名+密码进行加密的方式,由前端加密后传输到后端进行身份认证。
3、 SQL注入
a) 漏洞描述:通过在string(字符串)类型的字段中,输入敏感SQL语句,进行免密登录或越权操作。
b) 解决方案:对输入信息进行敏感字符拦截,并在后端开发中使用对象SQL注入方式进行数据库访问,避免使用SQL拼接的形式进行数据库访问。
4、 越权敏感信息修改
a) 漏洞描述:修改信息时,仅根据id参数进行操作,存在越权修改任意数据问题。
b) 解决方案:后端使用session机制,对敏感方法进行session当前用户权限验证。
5、 恶意文件上传
a) 漏洞描述:在项目中上传恶意文件。
b) 解决方案:后端对上传文件后缀名进行验证,防止系统操作文件或病毒文件的恶意上传。
6、 服务器文件盗取
a) 漏洞描述:根据服务器账户/入侵,在服务器中找到所需项目文件进行文件盗取。
b) 解决方案:后端使用UUID(唯一识别码)对文件进行重新命名(没有后缀),将原文件名(包含后缀名)、存储路径、对应的UUID等信息存储到数据库中进行关联。
7、 弱口令
a) 漏洞描述:密码机制过于简单
b) 解决方案:在用户注册或修改密码时,对密码进行条件限制,规则:8位及以上长度,密码中必须包含字母、数字、特殊字符,且不可为中文字符、不能与用户名相同。
8、 Shiro反序列化漏洞
a) 漏洞描述:低版本的shiro框架存在密匙公开,身份认证方法存在反序列化漏洞问题。
b) 解决方案:将shiro版本限制在1.4.2以上。
9、 ObjectInputStream反序列漏洞
a) 漏洞描述:java输入流ObjectInputStream类的resolveClass方法中存在反序列漏洞,容易被伪造的类进行反序列注入。
b) 解决方案:如果在项目中需要使用ObjectInputStream,则重写resolveClass方法,增加反序列类校验认证。
10、 数据拦截篡改
a) 漏洞描述:对请求信息进行拦截,篡改后重新发送到后端请求路径中。
b) 解决方案:使用签名认证的方式,对每次请求都进行签名加密,数据传输到后端后会依据数据信息进行签名认证。
11、 伪造HTTP请求
a) 漏洞描述:伪造HTTP请求信息的行为包括:XSS跨站脚本攻击、CSRF跨站请求伪造漏洞防护、URL链接注入漏洞防护等攻击方式。
b) 解决方案:配置filter过滤器对所有HTTP请求的请求头参数和请求数据进行合法性校验。
来源:oschina
链接:https://my.oschina.net/u/4390465/blog/4358069