目录
OWASP简介
开放式Web应用程序安全项目(OWASP)是一个非营利组织,不附属于任何企业或财团。因此,由OWASP提供和开发的所有设施和文件都不受商业因素的影响。OWASP支持商业安全技术的合理使用,它有一个论坛,在论坛里信息技术专业人员可以发表和传授专业知识和技能。
OWASP 有一个基金会在 2001年12月1日启动,它于2004年4月21日在美国成立。作为一家非营利性组织机构,OWASP 基金会旨在给OWASP的工作提供持续性支持。 OWASP是一家国际性组织机构,并且OWASP基金会支持OWASP世界各地分会的工作。OWASP是一个开放的、非盈利组织,它致力于协助政府、企业开发、升级各类应用程序以保证其可信任性。所有OWASP的工具、文档、研讨以及所有分会都对任何就应用安全领域感兴趣的人士自由开放。我们主张将应用安全看作一个人、一个过程或者一个技术问题,而提高应用安全最有效的办法则包括对所有这些领域的提升。
OWASP 是一个新型的组织。因为没有商业压力,我们能够提供无偏见、切实可行的、同时具有成本效益的应用安全信息。虽然OWASP支持使用商业安全技术,但它不隶属于任何技术公司。类似许多开源码软件项目, OWASP以协作、开放的方式创作多种类型的素材。
OWASP 基金会是一个确保项目长期成功的非盈利性实体。
什么是OWASP TOP10?
OWASP(开放式Web应用程序安全项目)的工具、文档、论坛和全球各地分会都是开放的,对所有致力于改进应用程序安全的人士开放,其最具权威的就是“10项最严重的Web 应用程序安全风险列表” ,总结了Web应用程序最可能、最常见、最危险的十大漏洞,是开发、测试、服务、咨询人员应知应会的知识。
1.访问控制崩溃
即所谓的越权漏洞。通过身份验证的用户,可以访问其他用户的资料或是隐私,没有管理好权限,导致攻击者可以利用这个漏洞进行查看别人的信息和数据。相当于对普通用户做了一个特权的提升。
如何防范: 1.用户权限的最小化,只能操作自己的内容。
2.如果用户注销,则应该使其JWT令牌失效。
3.除了公有资源,对其他资源默认禁止访问。
2.敏感数据的暴露
很多web应用程序和API都无法正确的保护敏感数据。例如一些财务信息等。攻击者可能通过此缺陷随意下载用户信息,进行诈骗以及身份盗窃或其他犯罪的行为。企业单位的规模的扩大,就会导致员工的信息安全意识参差不齐,可能就会违规使用,随意下载。
如何防范:1.首先是需要加强员工的意识
2.其次不要把公司的隐私上传到云服务
3.工作需要的邮箱不乱注册
3.注入
1.SQL注入
通俗讲就是在用户所输入的命令里插入命令,从而达到欺骗服务器执行恶意SQL命令的目的。SQL命令可进行插入,查询,删除等操作,当你提交这些命令,就等于间接控制数据库。
2.SQL注入分类
1.基于数据类型的分类
1.字符串类型注入
2.整型注入
2.基于程度和顺序的注入
1.一阶注射
2.二阶注射
3.基于从服务器接收到的响应
4.基于错误的SQL注入
5.联合查询的类型
6.堆查询注入
7.SQL盲注
1.基于布尔的SQL盲注
2.基于时间的SQL盲注
3.基于报错的SQL盲注
3.如何预防
1.使用成熟的waf
2.前端输入字符白名单验证(长度,类型)
3.特殊字符转义处理
4.SQL服务运行于专门的账号,且最小权限原则
4.不安全的设计
软件开发时,关键身份认证,访问控制,业务逻辑和关键部分没有安全的设计。攻击者可能利用此漏洞进行暴力破解,验证码绕过,验证码重复使用等操作。(例如密码找回,就存在上述缺陷。)达成目的后,修改支付订单,金额问题,重复支付,修改优惠券,修改支付状态等等。
如何预防:1.多因子认证
2.提高安全意识
3.限制用户当天使用验证码次数以及过期时间
5.安全配置不当
安全配置错误是最常见的安全问题。例如启用或安装不必要的程序,弱口令,应用软件不及时更新,安全服务未打开,应用服务器,应用程序框架没有进行安全配置。
如何预防:1.我的总结就是不必要的不打开,需要的一定要打开
2.每隔一段时间定期检查安全配置
6.使用含有已知漏洞的组件
攻击者利用程序中含有已知漏洞的组件,会造成严重的数据丢失或服务器接管。同时,使用含有已知漏洞的组件的应用程序和API可能会破坏应用程序防御、造成各种攻击并产生严重影响。
如何预防:1.仅从官方途径获取组件
2.监控漏洞官网关于已知漏洞组件的消息
7.认证崩溃
通过错误使用应用程序的身份认证或会话管理功能,攻击者能够破译密码,密钥或会话令牌。通俗的讲就是开发人员在开发时只关注web应用程序的功能,然后忽略了交互时出现的问题,所谓有交互的地方就会有问题嘛。账户更新啊或是弱口令,没有多因素的认证都会导致这个问题。
如何预防:1.多因素认证,防止暴力破解
2.检查弱口令,模拟爆破操作
3.生成高复杂的会话ID且绝对超时时使其失效
8.软件和数据完整性失败
是2021年新增的一个类别,主要关注缺乏完整性验证情况下做出与软件更新、关键数据和持续集成/持续交付(CI/CD)流水线相关的各种假设。CVE/CVSS数据最高加权影响之一映射到该类别中的10个CWE。此前版本中的“不安全反序列化”(Insecure Deserialization)类别如今也被归入这一更大类别。
如何预防:1.用数字签名或类似机制来验证软件或数据来自预期来源且未被更改。
2.确保使用安全工具验证组件不包含已知漏洞。
3.确保未签名或未加密的序列化数据不会在没有检查或数字签名的情况下发送到不受信任的客户端。
9.不足的日志记录和监控
不足的日志监管,以及响应使攻击者可以进一步攻击系统,而且是持续性的,久之甚至是篡改和销毁数据。大部分来源于企业自身检查能力不足,没有办法发现别人的攻击。
如何预防:1.确保所有登录、访问控制失败、输入验证失败能够被记录到日志中去
2.识别可疑或恶意帐户,并为后期取证预留足够时间。
3.确保日志以一种能被集中日志管理解决方案使用的形式生成。
4.确保高额交易有完整性控制的审计信息,以防止篡改或删除。
5.例如审计信息保存在只能进行记录增加的数据库表中。建立有效的监控和告警机制,使可疑活动在可接受的时间内被发现和应对。
10.服务器请求伪造
SSRF(即服务器请求伪造)是利用一个可以发起的网络请求的服务,当作跳板来攻击其他服务。简单来讲就是A让B帮忙去访问C,相当于找了个代理。攻击者利用此漏洞获取一些网站本地敏感数据。
如何预防:1.过滤返回信息,验证远程服务器对请求的相应,是比较容易的方法。如果Web应用获取某种类型的文件,那么可以在把返回结果展示给用户之前先验证返回信息是否符合标准。
2.统一错误信息,避免用户根据错误信息来判断远程服务器端口状态。
3.限制请求的端口为HTTP常用端口,比如80、443、8080、8090
4.黑名单内网IP,避免应用被用来获取内网数据,攻击内网。
5.禁用不需要的协议。仅仅允许HTTP和HTTPS请求。可以防止类似于file://、ftp://等引起的问题