zoukankan      html  css  js  c++  java
  • 了解 OWASP TOP 10

    OWASP TOP 10 了解程度

    OWASP(开放式Web应用程序安全项目)的工具、文档、论坛和全球各地分会都是开放的,对所有致力于改进应用程序安全的人士开放,其最具权威的就是“10项最严重的Web 应用程序安全风险列表” ,总结了Web应用程序最可能、最常见、最危险的十大漏洞,是开发、测试、服务、咨询人员应知应会的知识。

    1. 注入injection
    输入时将一些包含指令的数据发送给解析器,解释器当成命令执行。会产生类似于SQL注入、NoSQL注入、OS注入和LDAP注入(轻量目录访问协议) 的缺陷,
    如何防范:(写代码时尽量是数据和代码分离原则)
    1.使用安全的API,避免使用解释器
    2.对输入的特殊的字符进行ESCAPE转义处理
    3.使用白名单来规范化的输入验证方法
    ********************************************************
    2. 外部实体(XXE)
    XXE 全称为XML External Entity attack 即XML(可扩展标记语言) 外部实体注入攻击,许多过时的或配置不当的XML处理器在XML文档内进行外部实体引用。外部实体可用于泄露内部文件,通过使用文件URI处理器、内部文件共享、内部端口扫描、远程代码执行以及拒绝服务攻击等手段。
    防护措施:
    1. 使用开发语言提供的禁用外部实体的方法
    PHP:
    libxml_disable_entity_loader(true);
    
    JAVA:
    DocumentBuilderFactory dbf =DocumentBuilderFactory.newInstance();
    dbf.setExpandEntityReferences(false);
    
    Python:
    from lxml import etree
    xmlData = etree.parse(xmlSource,etree.XMLParser(resolve_entities=False))
    
    2. 过滤用户提交的XML数据
    关键词:<!DOCTYPE和<!ENTITY,或者,SYSTEM和PUBLIC。
    ********************************************************
    3. 跨站脚本(xss)
    xss攻击全称为跨站脚本攻击,当应用程序的新网页中包含不受信任的、未经恰当验证、转义的数据或可以使用HTML、JavaScript的浏览器API更新的现有网页时,就会出现xss漏洞。xss会执行攻击者在浏览器中执行的脚本,并劫持用户会话,破坏网站或用户重定向到恶意站点,使用xss还可以执行拒绝服务攻击。
    如何防范:
    1.验证输入
    2.编码输出(用来确保输入的字符被视为数据,而不是作为html被浏览器所解析)
    	需要编码的部分:
    	1. HTML实体
    	2. HTML属性
    	3. JavaScript
    	4. css
    	5. URL
    3. 过滤<>''等
    4. 使用ESAP验证实例
    ********************************************************
    4. 失效的身份认证
    通过错误使用应用程序的身份认证和会话管理功能,攻击者能够破译密码、密钥或会话令牌,或者暂时或永久的冒充其他用户的身份。
    如何防范:
    1.使用内置的会话管理功能
    2.通过认证的问候
    3.使用单一的入口点
    4.确保在一开始登录SSL保护的网页
    ********************************************************
    5. 敏感数据泄露
    未加密的信息极易遭到破坏和利用,我们应该加强对敏感数据的保护,web应用应该在传输过程中数据、存储的数据以及和浏览器的交互时的数据进行加密,保证数据安全。
    防范措施:
    1. 针对个人数据,必须加密存储,而且一定要用安全的加密算法(1. 针对本地存储且需要密文明文转换的使用aes128及以上的加密算法。2.常见的md5、base64等都是不安全的。)
    2. 针对敏感数据传输,需要采用ssl加密通道(每一个请求都应该使用ssl加密通道,因为每个请求里面都带有会话ID,会话ID就是敏感信息)
    3. 应用程序运行出错容易造成敏感信息泄露(如网站的程序堆栈信息直接显示,暴露web容器的名称和版本号),定制统一出错页面
    4.禁止敏感信息明文传递到web客户端,禁止明文存贮在文件或者数据库中,严格控制访问权限。
    ********************************************************
    6. 中断的访问控制
    与认证和会话管理相关的应用函数经常被错误地实现,从而允许攻击者破坏密码、密钥或是会话令牌,或者利用其他的应用漏洞来暂时或永久地获取用户身份信息。
    防护措施:
    1. 实现“默认拒绝”的访问控制机制,并且控制措施都应在服务器端创建。
    ********************************************************
    7. 安全配置错误
    安全配置错误是比较常见的漏洞,由于操作者的不当配置(默认配置,临时配置,开源云存储,http标头配置,以及包含敏感信息的详细错误),导致攻击者可以利用这些配置获取到更高的权限,安全配置错误可以发生在各个层面,包含平台、web服务器、应用服务器、数据库、架构和代码。
    如何防范:
    1.自动化安装部署
    2.及时了解并部署每个环节的软件更新和补丁信息
    3.实施漏洞扫描和安全审计
    4.及时关闭不需要的服务
    ********************************************************
    8. 不安全的反序列化
    不安全的反序列化可以导致远程代码执行、重放攻击、注入攻击或特权升级攻击
    如:shiro java反序列化漏洞
    防范措施:
    1.对序列化对象执行完整性检查和加密处理,防止被恶意篡改和创建恶意对象。
    2.反序列化过程之前执行严格的类型限制。
    3.隔离反序列化的代码,将其放在低权限的状态下运行。
    4.监视反序列化的过程。
    ********************************************************
    9. 使用含有已知漏洞的组件
    组件(eg:库、框架或其他软件模块)拥有应用程序相同的权限,如果应用程序中含有已知漏洞,攻击者可以利用漏洞获取数据或接管服务器。同时,使用这些组件会破坏应用程序防御,造成各种攻击产生严重的后果。
    防范:
    1. 识别正在使用的组件和版本,包括所有的依赖
    2. 监控这些在公共数据库中、项目的邮件列表、以及安全邮件列表的组件的安全性,并保持他们更新到最新版本。
    3. 建立安全策略来管理组件的使用,如需要一定的软件开发时间,通过安全测试和可接受的许可证
    ********************************************************
    10. 不足的日志记录和监控
    不足的记录和监控漏洞,再加上事件响应能力欠缺以及缺少有效的整合,使得攻击者可以进一步攻击系统,维持其持久性,转而攻击更多的系统,并篡改、提取或销毁数据。大部分的数据泄露研究显示,检测出发生数据泄漏的时间通常需要超过200天,而且通常是外部机构率先发现数据泄漏的事实,而不是通过内部的审计流程或监控发现的。
    防范措施:(严格按照安全日志管理要求)
    1. 应用系统日志的保存期限要求如下:
    安全级别为高的应用系统,日志保存时间至少为36个月;
    安全级别为中或者低的应用系统,日志保存时间至少为12个月。
    2. IT基础设备和系统的日志保存时间至少为12个月。
    3. 日志记录应设置合理的阀值并进行监控,确保达到阀值前进行有效的处理,确保日志的安全性和完整性。
    4. 在未确保日志安全备份前,任何人不得以任何理由删除日志。对于恶意破坏日志独立性和真实性的行为将按照《信息安全奖惩管理办法》进行处罚。
    5. 日志销毁  超出本规范要求的保存期限的日志,由系统管理员自行删除。
    
  • 相关阅读:
    C#使用Json.Net遍历Json
    晓晨高效IP提取工具 附源码
    JavaScript原生秒表、计时器
    网盘直链工具 winform版 V1.0
    【架构】RPC 使用 Haproxy、keepalive作为负载均衡
    【架构】Google的大规模集群管理工具Borg
    【Networking】gRPC golang 相关资料
    【Linux】find grep 联合使用 过滤所有子目录、文件
    【Storage】Ubuntu LVM 安装配置
    【Ansible】SSH Error: ssh_exchange_identification: Connection closed by remote host
  • 原文地址:https://www.cnblogs.com/kbhome/p/13061594.html
Copyright © 2011-2022 走看看