系统安全规约实践
一、 权限控制
1.1 越权访问漏洞
什么是越权访问
越权访问(Broken Access Control,简称BAC)是Web应用程序中一种常见的漏洞,由于其存在范围广、危害大,被OWASP列为Web应用十大安全隐患的第二名。
这个图直接截图老师ppt中的,还是很能说明问题
防范措施
- 前后端同时对用户输入信息进行校验,双重验证机制
- 调用功能前,验证用户是否有权限调用相关功能
- 执行关键操作前必须验证用户身份,验证用户是否具备操作数据的权限
- 直接对象引用的资源ID要加密,防止攻击 者枚举ID,敏感数据特殊化处理
- 永远不要相信来自用户的输入,对于可控参数进行严格的检查与过滤
水平越权访问漏洞
水平越权访问是一种“基于数据的访问控制”设计缺陷引起的漏洞。 由于服务器端在接收到请求数据进行操作时,没有判断数据的所属人/所属部门而导致的越权数据访问漏洞。
水平越权防范错误
使用mybatis插件机制,加入数据权限,一般是根据部门来做隔离。实例代码,暂时截图老师的:
二、 敏感数据处理规约
手机号等信息,被其他人获取到,一般是数据库中,或者日志中被搞走。
脱敏方式一般有:显示脱敏,日志脱敏和存储脱敏,接下一一讲一下具体怎么做到。
2.1 显示脱敏
一般是手机号,可以定义json数据转换器的规则。
2.2 日志脱敏
定义logback的日志脱敏规则转换器。
2.3 数据存取加密
结合MyBatis原理,方案是编写拦截器,处理Parameterhandler和ResultHandler。
2.4 数据传输加密
编写servlet filter, 注入到过滤器链中。
三、 SQL注入问题
3.1 直接$拼接场景
问题代码:
正确写法:
3.2 in参数
问题代码:
正确写法:
3.3 order写法
四、跨站点攻击XSS
用实例解释一个XSS,如果微博没有做相关XSS防御,我可以发一个帖子,里面带上一些脚本;只要有人看到我发的帖子,这个脚本就会执行。
这样我可以去分析用脚本怎么去拿微博登录用户的一些信息,这样就看我脚本的水平了。
防御XSS攻击,主要是通过servlet过滤器等,将一些脚本类的标志给转码显示。
五、重放攻击
这个作为一个专题后续分享,单独来写。还会包含Sentinel的使用实例。