WEB系统安全
web开发过程中,安全隐患问题不容忽视。
本文介绍常见的安全问题及防护措施
登录认证防暴力破解
登录认证模块提供防暴力破解机制
现象:
多次更换不同用户名密码尝试登录
防护措施:
生物智能手段,主要防护措施如下:
- 图片识别
- 文字识别
- 短信验证码
- 第三方确认-阿里云登录在手机支付宝确认
多次失败登录
现象:
多次获取验证码并且登录失败,且还在持续尝试登录
防护措施:
连续获取验证码、登录5次失败后,账号锁定15分钟
本条防御措施应该和生物智能手段联用,防护效果更加
url越权
现象:
当前登录用户访问了不属于自己菜单权限的页面
防护措施:
对于每一个需要授权访问的页面都必须核实用户的访问标识是否允许。
用户是否被授权去某个页面操作,防止URL越权
Vue-路由守卫处判断拦截
登录口令保护
现象:
用户登录后,后端返回的口令直接保存,并在下一次请求时直接传输。此时如果是正常用户访问目标服务器,是没有任何问题的。如果攻击者拿到口令尼,攻击者将有和被攻击者同样的身份权限去访问目标网站接口。
防护措施:
用户登录后保存sessionId在localstoage或者cookie中,再去请求接口时需要加密登录口令后再传输,不能直接拿原始sessionId请求,访问api越权操作
越权
垂直越权
垂直越权是一种“基于URL的访问控制”设计缺陷引起的漏洞,又叫做权限提升攻击。
现象:
攻击者在获得低权限用户账户后,利用一些方式绕过权限检查,访问或者操作其他用户或者更高权限
水平越权
水平越权访问是一种“基于数据的访问控制”设计缺陷引起的漏洞。
现象:
攻击者在获得目标网站登录用户登录信息后,利用数据校验漏洞访问了其他权限等级用户的数据信息。
防护措施:
- 前后端都要对用户输入信息、路由权限、数据分离进行校验,双重验证机制
- 调用功能前验证用户是否有权限调用相关功能
- 执行关键操作前必须验证用户身份,验证用户是否具备操作数据的权限
- 直接对象引用的加密资源ID,防止攻击者枚举ID,敏感数据特殊化处理
- 永远不要相信来自用户的输入,对于可控参数进行严格的检查与过滤
java选用工业级的处理方式-shiro框架应用
其他安全
上传问题防御
- 限制上传文件后缀
- 文件类型检查
- 文件内容检查
- 程序输出
- 权限控制-可写可读执行互斥
XSS
- 输入校验
- 输出转码
富文本
常见的引发XSS攻击,白名单过滤
cookie泄露冒用:
在用户登录后返回一个 签名(sign),这个签名是依靠uid生成的。都返回给客户端保存在cookie中,
接口加统一拦截,校对uid和sign,如果正确正常返回接口,如果不正确,返回您正在进行违规操作
安全日志
日志和安全表面来看,好像关系不大。
但是一旦因为安全问题产生垃圾数据时,日志的作用就会无限放大。
通过日志记录可以分析出何时、何人、何地做了什么操作,对我们后期删除垃圾数据、恢复异常数据来讲,意义重大。
总结
安全问题对于web应用开发来说,避无可避。
问题出现的方式层出不穷,但是只要掌握了核心的处理思路就会事半功倍。
下图是笔者整理的安全攻防策略图:
欢迎各位读者指出错误的地方,留言讨论。