java开发安全策略_风险漏洞与解决方案

自闭症网瘾萝莉.ら 提交于 2020-10-06 06:48:50

项目语言: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请求的请求头参数和请求数据进行合法性校验。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!