安全开发与编码
一 历史漏洞情况分析
西北工业大学 9月 美国国家安全局(NSA)下属的特定入侵行动办公室(TAO)使用了40余种不同的专属网络攻击武器,持续对西北工业大学开展攻击窃密
印度ICICI银行
被轻而易举获取敏感信息
系统配置错误
二 安全形势与案例
常见10大安全漏洞
三 漏洞与安全编码
1 权限绕过 水平越权
攻击者访问与他拥有相同权限用户的资源 所以staff信息不能通过传参
垂直越权 url设计缺陷 权限扩大到了超管
未授权访问: 在未登录的时候 根据前端获取接口信息 会返回应用系统的敏感信息 或直接登录系统
Druid未授权! Swagger未授权访问 可以执行后台接口!
权限认证修复建议
1 先判断是否是管理员账户;
2 全局过滤器 判断当前用户是否登录及权限;
3 一定要对数据的所有者进行判断 用session/token获取
4 spring 注解有权限
5 Apache Shiro 全局过滤器 哪些路由是哪些权限可以控制的
1 配置
/login =anon
/user/admmin*=authc
2 注解
2 接口调用
短信炸弹 : 调用短信接口没有加校验 造成接口费用消耗
1 调用短信接口时候 限制短信号码发送频率
2 限制手机号 手机号从库中查到
3 设定有效期 60秒 输入次数3词
4 多次请求接口 封禁ip
5 验证码验证通过后马上清空
暴力破解修复建议
任意用户密码重置
短信验证码回传: 响应包中不反悔验证码
第一次发 2001
第二次发2002
修改响应包 验证码根据接口返回false 提示验证错误 修改相应包之后改成true 发现进入了修改密码界面
3 敏感信息泄露
脱敏处理
前端js代码中包含加密密钥
攻击者利用报错信息
常见漏洞
1 SQL注入
''#'' 相当于注释
where username='user'#'' and password='123'
执行时
where username='user'
闭合单引号
字符串过滤: esapi自带的针对数据库的编码规则
2 XSS
反射性xss
诱使点击恶意链接
存储型xss 非持久性跨站点脚本攻击 每次都需要用户点击
后端获取到前端传来的sid和name数据未进行任何过滤 直接执行
存储型xss
dom型xss
客户端dom解析时出现的问题
修复建议: 全局过滤器 拦截器
至少需要过滤< > ' ' & 五个特殊字符
使用ESAPI 或者common 不适用于富文本编译器的情况
输出转义(建议)
调用安全编码函数
富文本修复建议
3 XML外部实体注入(XXE)
没有对外部实体数据进行安全处理
1 test 任意文件读取
修复建议
防止xml外部实体注入
4 (服务器)命令注入
输入字符过滤不严格
危险函数:
RunTime.getRunTime().exec()
ProcessBuilder.start()
JsEngine.eval()
修复建议
1 禁止从客户端获取命令
2 对外部传来的字符串进行转码或者黑名单过滤 最好是白名单放行
3 工具类如下:
5 CSRF跨站请求伪造
xss 利用站点内用户
CSRF 伪造站内用户 B造了一个和A一样的一套网站 调用B的时候 实际访问A
修复建议:Token校验 从session中获得token属性 如果是空产生新token 只有符合情况才能请求 如果不符合会认为请求是伪造的
6 SSRF 服务器端请求伪造
从公网绕过防火墙 进入172内网统一网段的服务器
ssrf
前端传入url 通过httpClient处理url
创建客户端链接通道 发送get请求给url
通过httpResponse 求情对象
如果url填写baidu.com 可以直接跳转到baidu
危害
修复建议
7 文件上传漏洞
.加空格 可以绕过上传
jdk7修复了 增加isInvalid方法检查文件名是否包含空字节
修复
文件下载
对fileName过滤 限制指定目录下的
修复
防止目录穿越 对文件路径严格限制 只能下载download下的文件