一、注入(常见sql注入)
原理:违背了“数据与代码分离”原则。通过拼接sql语句获取敏感数据
条件:数据没有经过程序的验证过滤
防御:1、使用安全的api,避免使用解释器,使用预编译语句
2、转义敏感字符
3、设置白名单
二、失效的身份认证
原理:弱口令,密码泄露,暴力破解,明文密码
防御:1、使用多因素身份认证
2、不使用默认密码(弱口令)
3、加token(令牌)
4、加密
三、敏感数据泄露
原理:中间人攻击,明文数据
方式:如burp抓包,修改后发包。
防御:1、所有敏感数据加密处理
2、确保传输过程中数据被加密(如使用https)
3、使用密码专用算法
四、XML外部实体(XXE)
原理:上传XML文档或者在 XML文档中添加恶意内容
防御:1、使用尽可能简单的数据格式(如json),避免对敏感数据进行序列化
2、服务器使用白名单进行输入验证,过滤等,防止出现恶意数据。
五、失效的访问控制
原理:通过对访问控制的利用实现权限绕过,提升权限
防御:1、基于角色的访问控制
2、使用最小权限
3、记录失败的访问控制,并适当时向管理员报警
六、安全配置错误
原理:够通过未修复的漏洞、 访问默认账户、不再使用的页面、未受保护的文件和目录等来取得对系统的未授权的访问或了解。
防御:1、搭建最小平台,不要任何不必要的功能、组件、文档等
2、及时安装更新和补丁
七、跨站脚本攻击(XSS)
原理:篡改网页,插入了恶意脚本,从而在用户浏览网页时,控制用户的浏览器。
三种:反射型、存储型、DOM型
危害:盗取session、账户(cookie)以及其他多种攻击
防御:1、(使用安全策略)如httpOnly解决XSS的COOKIE劫持
2、输入检查,将特殊字符编码或者过滤
八、不安全的反序列化
原理:把内存、文件、数据库中或者在网络通信中传输的文本格式或字节流格式还原成对象。
防御:1.对序列化对象执行完整性检查和加密处理,防止被恶意篡改和创建恶意对象。
2.反序列化过程之前执行严格的类型限制。
3.隔离反序列化的代码,将其放在低权限的状态下运行。
4.监视反序列化的过程。
九、使用含有已知漏洞的组件
原理:这些漏洞容易被攻击
防御:1、搭建最小平台
2、关注cve,cnvd这些 实时监控着
3、使用签名机制
十、不足的日志记录和监控
原理:管理员不在意危险log、
log未记录敏感事件、没有监控可疑事件、
防御:1、确保所有敏感事件记录到日志中
2、简历有效的监控机制
网友评论