博客
关于我
Web漏洞总结: OWASP Top 10
阅读量:448 次
发布时间:2019-03-06

本文共 2850 字,大约阅读时间需要 9 分钟。

开发安全 - OWASP Top 10

在现代Web开发中,安全性是不可或缺的一部分。了解应用程序的安全趋势和常见漏洞至关重要,而OWASP(开放式Web应用程序安全项目)提供了业界领先的安全漏洞排行榜(Top 10)。这个榜单不仅总结了Web应用程序中最常见、最危险的安全隐患,还提供了有效的防御建议。以下将详细探讨2017年版OWASP Top 10的更新内容以及每个漏洞的防御策略。


OWASP Top 10:2013版至2017版的变化

过去几年,应用程序的技术和架构发生了深刻的变化,这也带来了新的安全挑战:

  • 微服务架构的普及:如Node.js和Spring Boot构建的微服务应用,引入了新的安全问题,如容器安全、密钥管理等。
  • 前端的模块化发展:如Angular和React的使用,使得客户端功能从服务器端转移到了浏览器,带来了安全风险。
  • JavaScript在Web开发中的广泛应用:从服务器端到客户端,JavaScript的重要性不断提升,增加了安全隐患。

  • OWASP Top 10

    A1: 注入(2017)

    描述:将不受信任的数据作为命令或查询的一部分发送到解析器时,可能导致SQL注入、NoSQL注入、OS注入或LDAP注入等安全漏洞。攻击者可利用恶意数据执行非预期命令或访问敏感数据。

    案例

    • 通过未经验证的参数构造SQL语句:
      String query = "SELECT * FROM accounts WHERE custID='" + request.getParameter("id") + "'";
    • 攻击者可通过修改id参数值,导致数据泄露或命令执行。

    防御方法

    • 使用ORM框架或实体框架避免直接构造SQL语句。
    • 对输入数据进行严格的转义处理。
    • 使用安全的API设计,避免解析器执行动态查询。

    A2: 失效的身份验证(2017)

    描述:由于身份验证或会话管理的缺陷,攻击者可绕过认证,假扮他人或盗取权限。常见问题包括弱密码、暴力破解或会话ID泄露。

    案例

    • 用户使用易攻破的默认密码登录。
    • 会话ID暴露在URL中,攻击者可利用其完成认证。

    防御方法

    • 实施多因素身份验证(MFA)。
    • 强化密码策略,禁用弱密码。
    • 使用服务器端生成的随机会话ID,避免URL传递。

    A3: 敏感数据泄露(2017)

    描述:未加密的敏感数据(如财务信息、医疗记录)易受攻击,导致信用卡诈骗、身份盗窃等。

    案例

    • 数据在传输或存储过程中未加密。
    • 通过网络监控将未加密数据窃取。

    防御方法

    • 对敏感数据进行加密,包括传输和存储过程。
    • 使用TLS协议加密传输数据。
    • 禁止数据缓存,确保数据仅在必要时存储。

    A4: XML外部实体(XXE)(2017)

    描述:应用程序解析不受信任的XML外部实体,导致数据泄露或远程攻击,如拒绝服务。

    案例

    • 攻击者上传恶意XML文件,包含实体引用:
    • 攻击者可通过恶意文件执行拒绝服务攻击。

    防御方法

    • 禁用XML外部实体解析和DTD处理。
    • 使用安全的数据格式(如JSON)替代XML。
    • 对XML数据进行严格过滤和验证。

    A5: 失效的访问控制(2017)

    描述:未对用户实施恰当的访问控制,攻击者可访问未经授权的功能或数据,导致数据泄露或修改。

    案例

    • 未验证的URL绕过访问控制:http://example.com/app/admin_infohttp://example.com/app/user_info-攻击者可通过修改URL参数访问管理页面。

    防御方法

    • 强化访问控制检查,确保所有功能模块有权限访问。
    • 使用基于角色的访问控制(RBAC)。
    • 禁止目录列表暴露,确保文件和目录权限有限制。

    A6: 安全配置错误(2017)

    描述:应用程序或服务器的默认配置错误,导致安全漏洞,如未禁用诊断接口或错误信息暴露。

    案例

    • 未禁用服务器目录列表,攻击者可列出所有文件。
    • 错误信息中暴露系统版本或数据库细节。

    防御方法

    • 定期检查和修复安全配置。
    • 禁止堆栈跟踪信息的暴露。
    • 使用安全的默认设置,移除不必要的功能。

    A7: 跨站脚本(XSS)(2017)

    描述:应用程序未对用户输入进行适当转义,攻击者可通过恶意脚本劫持会话或修改页面内容。

    案例

    • 未经转义的用户输入直接写入HTML:
    • 攻击者可通过修改CC参数注入恶意脚本。

    防御方法

    • 对所有输出数据进行HTML转义。
    • 使用内容安全策略(CSP)限制脚本执行。
    • 禁止动态生成HTML内容。

    A8: 不安全的反序列化(2017)

    描述:应用程序反序列化过程中未进行严格验证,攻击者可利用反序列化漏洞执行远程代码攻击。

    案例

    • PHP对象序列化存储用户cookie:
      a:4:{i:0;i:132;i:1;s:7:"Mallory";i:2;s:4:"user";i:3;s:32:"b6a8b3bea87fe0e05022f8f3c88bc960";}
    • 攻击者可篡改序列化对象,获取管理员权限。

    防御方法

    • 强制执行严格的类型检查。
    • 使用安全的反序列化库或工具。
    • 监控反序列化过程中的异常情况。

    A9: 使用含有已知漏洞的组件(2017)

    描述:应用程序使用未修复的库或组件,攻击者可利用已知漏洞攻击系统。

    案例

    • Struts2远程执行漏洞:
      String result = new String((String) request.getParameter("cmd").getBytes());
    • 攻击者可通过恶意输入执行远程代码。

    防御方法

    • 定期更新组件和库,修复已知漏洞。
    • 禁用不必要的功能模块。
    • 使用安全工具检测已知漏洞。

    A10: 不足的日志记录和监控(2017)

    描述:应用程序缺乏足够的日志记录和监控,攻击者可利用漏洞进行持续攻击或数据篡改。

    案例

    • 小团队运营的开源项目论坛被攻击,导致源代码丢失。
    • 高额交易未记录,攻击者可篡改或删除数据。

    防御方法

    • 配置全面的日志记录,包括登录、错误和审计信息。
    • 使用日志管理工具集中监控和分析日志。
    • 建立响应机制,及时处理安全事件。

    开发人员、安全测试人员和企业的下一步行动

    开发人员

    • 建立并使用可重复使用的安全开发流程,避免代码审查中漏掉安全问题。

    安全测试人员

    • 实施持续性安全测试,覆盖开发、预发布和生产环境。
    • 使用自动化工具(如SAST、DAST)和渗透测试发现漏洞。

    企业组织

    • 启动应用程序安全计划,整合安全团队和开发部门。
    • 使用OWASP资源和工具(如ZAP)进行安全扫描和修复。

    应用程序管理者

    • 管理完整的应用程序生命周期,从需求收集到系统下线。
    • 确保安全配置和更新,监控应用程序的安全状态。

    风险因素总结

    OWASP Top 10漏洞涵盖了应用程序安全中的主要风险因素。攻击者可通过这些漏洞对企业造成严重的经济损失或声誉损害。因此,定期评估应用程序的安全状态,结合威胁代理和业务影响,制定针对性的防御策略至关重要。

    转载地址:http://lpzfz.baihongyu.com/

    你可能感兴趣的文章
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_实现数据插入数据到目标数据库_实际操作03---大数据之Nifi工作笔记0042
    查看>>
    NIFI从MySql中离线读取数据再导入到MySql中_03_来吧用NIFI实现_数据分页获取功能---大数据之Nifi工作笔记0038
    查看>>
    NIFI从PostGresql中离线读取数据再导入到MySql中_带有数据分页获取功能_不带分页不能用_NIFI资料太少了---大数据之Nifi工作笔记0039
    查看>>
    NIFI同步MySql数据_到SqlServer_错误_驱动程序无法通过使用安全套接字层(SSL)加密与SQL Server_Navicat连接SqlServer---大数据之Nifi工作笔记0047
    查看>>
    Nifi同步过程中报错create_time字段找不到_实际目标表和源表中没有这个字段---大数据之Nifi工作笔记0066
    查看>>
    NIFI大数据进阶_FlowFile拓扑_对FlowFile内容和属性的修改删除添加_介绍和描述_以及实际操作---大数据之Nifi工作笔记0023
    查看>>
    NIFI大数据进阶_NIFI的模板和组的使用-介绍和实际操作_创建组_嵌套组_模板创建下载_导入---大数据之Nifi工作笔记0022
    查看>>
    NIFI大数据进阶_NIFI监控的强大功能介绍_处理器面板_进程组面板_summary监控_data_provenance事件源---大数据之Nifi工作笔记0025
    查看>>
    NIFI大数据进阶_内嵌ZK模式集群1_搭建过程说明---大数据之Nifi工作笔记0015
    查看>>
    NIFI大数据进阶_外部ZK模式集群1_实际操作搭建NIFI外部ZK模式集群---大数据之Nifi工作笔记0017
    查看>>
    NIFI大数据进阶_离线同步MySql数据到HDFS_01_实际操作---大数据之Nifi工作笔记0029
    查看>>
    NIFI大数据进阶_离线同步MySql数据到HDFS_02_实际操作_splitjson处理器_puthdfs处理器_querydatabasetable处理器---大数据之Nifi工作笔记0030
    查看>>
    NIFI大数据进阶_连接与关系_设置数据流负载均衡_设置背压_设置展现弯曲_介绍以及实际操作---大数据之Nifi工作笔记0027
    查看>>
    NIFI数据库同步_多表_特定表同时同步_实际操作_MySqlToMysql_可推广到其他数据库_Postgresql_Hbase_SqlServer等----大数据之Nifi工作笔记0053
    查看>>
    NIFI汉化_替换logo_二次开发_Idea编译NIFI最新源码_详细过程记录_全解析_Maven编译NIFI避坑指南001---大数据之Nifi工作笔记0068
    查看>>
    NIFI集群_内存溢出_CPU占用100%修复_GC overhead limit exceeded_NIFI: out of memory error ---大数据之Nifi工作笔记0017
    查看>>
    NIFI集群_队列Queue中数据无法清空_清除队列数据报错_无法删除queue_解决_集群中机器交替重启删除---大数据之Nifi工作笔记0061
    查看>>
    NIH发布包含10600张CT图像数据库 为AI算法测试铺路
    查看>>
    Nim教程【十二】
    查看>>
    Nim游戏
    查看>>