常见漏洞修复建议(汇总)
1、未授权访问
添加访问权限控制,对访问系统资源得用户身份进行标识,禁止未授权得情况下访问后台资源。
2、敏感信息泄露
1.后端控制严谨,用*号来隐藏敏感信息展现。
2.密码策略要足够复杂,开启二步验证。
3.服务配置严谨,对测试和生产资源做好访问控制。
4.对员工培训相关安全意识。
5、禁止在前端显示明文或密文信息。
3、任意文件下载
使用白名单限制下载路径,建议不要使用拼接文件路径参数的方式拼接下载路劲,可采用随机文件ID的方式传递需要下载的文件。
4、目录遍历
使用白名单限制可以查看的路径。
5、弱口令
对存在弱口令的账号密码进行更改,要求密码长度至少8位,并且包含数字、大写字母、小写字母、特殊符号任意三种组合;添加图形验证码,识别人机交互;增加登录失败处理机制,限制登录尝试次数。
6、垂直越权
1.对账号权限大小进行鉴权处理,判断用户会话身份。
2.前后端同时对用户输入信息进行校验,双重验证机制
3.调用功能前验证用户是否有权限调用相关功能
4.执行关键操作前必须验证用户身份,验证用户是否具备操作数据的权限
5.直接对象引用的加密资源ID,防止攻击者枚举ID,敏感数据特殊化处理
7、shrio-550反序列化命令执行
升级shiro版本到官方最新版,并随时保持更新。
8、存储型XSS漏洞
1.将重要的Cookie标记为 http only,使javascript中的document.cookie语句不能获取到Cookie。
2.输入检查:
在构造白名单的过程中需要保证在不影响用户体验的同时,尽可能杜绝一切不必要的输入内容,只允许用户输入我们期望的数据。 例如:
年龄的textbox中,只允许用户输入数字,而数字之外的字符都过滤掉。
3.输出检查:
对数据进行html encode处理,过滤移除特殊的html标签。
9、sql注入漏洞
[1]对用户的输入进行严格过滤,包括所有的参数,URL和HTTP头部等所有需要传给数据库的数据。包括但不限于以下字符及字符串:
select and or like regxp from where update exec order by having drop delete ( ) [ ] < > , . ; : ' " # % + - _ = / * @
[2]预编译SQL语句,而不要动态组装SQL语句,否则必须确保在使用输入的数据组装成SQL语句之前,对特殊字符进行预处理。
[3] 以最小权限执行SQL语句
10、app敏感信息泄露(api key)
将key存储在服务端,通过客户端请求获取或者将key加密编译在动态链接库中
11、etcd未授权访问漏洞
kubernetes的master会安装etcd v3用来存储数据,如果管理员进行了错误的配置,导致etcd未授权访问的情况,那么攻击者就可以从etcd中拿到kubernetes的认证鉴权token,从而接管集群。
12、后台爆破
添加验证码机制,识别人机交互;增加登录失败处理机制,如登陆失败x次之后,限制其在30分钟内无法再次登录。
13、验证码复用
1.完善验证码机制,无论登录成功与否,对于当前已经使用过的验证码要即使销毁并重新生成。
2.限制用户提交的验证码不能是空的。
3.判断提交的验证代码是否与服务器存储的一致。
4.禁止将验证代码的明确信息发送给客户。
14、跨域资源共享(CORS)漏洞
1.白名单限制:定义“源”的白名单,避免使用正则表达式,不要配置Access-Control-Allow-Origin为通配符*或null,严格效验来自请求数据包中Origin的值
2.避免将Access-Control-Allow-Credentials标头设置为true 替换值,跨域请求若不存在必要的凭证数据,则根据实际情况将其设置为false
3. 限制跨域请求允许的方法,Access-Control-Allow-Methods替代地减少所涉及的方法,降低风险
复测情况:
15、Token不注销漏洞
退出登录立马注销当前token,一个用户只允许同时存在一个token。
16、Token不注销漏洞
1. 确保JWT是独一无二的:每个JWT应该有一个唯一的标识符,并且在数据库中标记为不可复制或重用。
2. JWT的生命周期管理:设置合适的JWT有效期,并提供机制使其在不再需要时即时失效。
3. 验证JWT的使用上下文:确保每次使用JWT时,用户的会话信息(如IP地址、设备信息等)与初次发放JWT时的信息匹配,以防止会话在不同上下文被复用。
4. 使用JWT黑名单:当用户注销或主动注销时,将其相关的JWT标记为无效,并加入黑名单。
5. 使用JWT的签名机制:确保使用强签名算法,并且保管好签名使用的密钥,以防止签名被伪造。
17、Swagger-ui接口文档未授权访问漏洞
1.Swagger开启页面访问限制。
2.Swagger开启Authorize认证。
18、Accesskey泄露
禁止将accesskey 存储在静态资源中,并且限制accesskey的权限,如仅上传权限
19、Druid未授权访问漏洞
Druid 开启权限校验。
20、任意文件上传漏洞
1.在服务器后端控制上传文件类型,处理时强制使用随机数改写文件名和文件路径,不要使用用户自定义的文件名和文件路径。
2.在服务器后端建议使用白名单的方法对上传的文件进行过滤,上传的目录不进行解析,只提供下载权限。
3.开源编辑器上传漏洞:若新版编辑器已修复漏洞,请更新编辑器版本。
4.除了以上的方法之外,还可将被上传的文件限制在某一路径下,并在文件上传目录禁止脚本解析。