应用程序接口(API)安全的入门指南(非常详细)从零基础入门到精通,看完这一篇就够了_api入门教程(2)

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以点击这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 满足生产环境的规范:例如,如果端点经常返回 502 错误的话,您就应该考虑使用 API,来对其进行修复。
  • 可扩展性:如果端点需要通过扩展,来解决 504 错误的话,您需要找出与此相关的微服务、最佳流程、以及解决问题的方向(例如,针对 GraphQL 的 REST API)。

![](https://img-
blog.csdnimg.cn/img_convert/96f6a49606bb21d4e01a3282faa72f23.jpeg)

API 的工作原理流程图

安全:

  • 新的协议:如何应对防火墙、扫描仪和其他旧工具停止升级的问题?
  • 东 - 西向(East-west,即各个后端应用与数据库之间,区别于我们常说的南 - 北向)安全:在网络内缺乏对通信的良好监控。
  • 新的安全、网络或其他 IT 组件的合规性需求。
API 安全的重要性

如前所述,API 与 API 安全是相辅相成的。那些安全性较差的 API,往往容易暴露,且受黑客的攻击。而由于 API
主要用于交换信息、连接服务和传输数据,因此一旦出现数据泄露,就会给企业带来重大的损失。

API 的各种认证方法

在授予用户访问权限之前,我们有必要验证那些查看或编辑 API 资源的用户的真实身份,以防止 API 被不恰当地使用。

1、基于主机的认证

该过程通过验证主机或服务器,以保证只有经过验证的用户,才能访问到部署在服务器上的资源。我们并不需要任何密钥、或其他方式,来启动该过程。但是,服务器应该有能力通过实时验证登录密钥,以控制
DNS 欺骗、路由欺骗、以及 IP 欺骗等事件。

在流程和实现方式上,基于主机的认证与 RSA
非常相似。默认情况下,我们可以不必设置任何参数。基于主机的用户验证,可以由管理员通过为本地主机创建私钥、或提取用于本地主机的公钥来完成。

2、基本认证

这是最直接的 API 身份确认方案之一。由于客户端发送带有预构建标头的 HTTP 请求,因此,该方法使用 HTTP
协议和进程,来请求和验证用户名和密码等凭据。此类检查往往是在浏览器驱动的环境中完成的。

由于能够得到绝大多数浏览器和服务器的支持,因此此类身份认证所使用到的凭据详细信息,可以明文形式在网络上共享,或仅使用 base64
进行编码。它不但能够在各种代理服务器上运行,而且能够将访问权限授予那些并未托管在 IIS
服务器上的资源。由于缺少加密的保护,因此它很容易受到重放等方式的攻击。

3、OAuth

作为一种可定制的开放式 API 身份验证技术,OAuth 可以通过验证用户身份和定义授权标准,实现应用与服务器、及存储类 API 的交互。

当有人登录系统时,它会通过请求令牌的方式,去验证用户身份。为此,个人或请求的创建者必须将访问资源的请求,转发到身份验证服务器上。服务器进而会根据验证的结果,对请求予以接受或拒绝。

相比其他流程,OAuth 更为安全,因此它成为了许多用户的首选。OAuth 的三个关键要素包括 OAuth 提供者(如 Google 和
Facebook)、OAuth 客户端(指承载信息的网站 / 页面)、以及所有者(指提出访问请求的用户)。

4、OAuth 2.0

作为 OAuth 的更新版本,OAuth 2.0 是一种被广泛使用的 API 访问管理协议。其功能包括通过使用 HTTP 服务,来启动客户端应用,进而限制
API 客户端的访问。GitHub 和 Facebook 都在其关键性 HTTP 服务的身份验证代码中,使用到了该协议,进而免去了用户凭据。

OAuth 2.0 的三个关键要素分别是:拥有数据的用户、应用程序和 API
本身。在身份验证的过程中,该方法可以很容易地解析到使用不同资源的用户数据。它可以根据验证目的,被部署到基于 Web、移动及桌面的应用程序与设备中。

5、SAML

安全断言标记语言(Security Assertion Markup Language,SAML),是使用单点登录技术进行身份验证的标准化 API
流程。它会根据用户提供的详细信息来进行验证。只有完成验证,用户才会被授予针对各种应用程序或资源的访问权限。目前,SAML 2.0 是被普遍使用的版本。它与
ID 非常类似,可以协助完成对于用户身份的评估。

API 安全意味着什么?

API 安全不仅专注于保护那些直接或间接暴露给用户的 API,还涉及到节流、速率限制等网络安全原则,基于身份的安全分析,以及如下关键性的安全控制概念:

![](https://img-
blog.csdnimg.cn/img_convert/0e16eb30154b839131af6c4dda7e44ae.jpeg)

![](https://img-
blog.csdnimg.cn/img_convert/7e8b3cfc54062baba753ec6c479e3d08.jpeg)

API 协议

API 可以根据不同的需求,以多种形式和样式被使用。而不同的使用方式也决定了 API 实施的安全性。

SOAP

简单对象访问协议(Simple Object Access Protocol,SOAP)是一种基于 XML 的消息传递与通信协议。该协议可以扩展
HTTP,并为 Web 服务提供数据传输。使用该协议,我们可以轻松地交换包含着所有内容的文件、或远程调用过程。与诸如 CORB、DCOM 和 Java
RMI 等其他框架的不同之处在于,SOAP 的整个消息都是被写在 XML 中的,因此它能够独立于各种语言。

REST

作为基于 HTTP 协议的 Web 标准架构,REST 针对每个待处理的 HTTP 请求,可以使用四种动词:GET、POST、PUT 和
DELETE。对于开发人员来说,RESTful 架构是理解 API 功能和行为的最简单工具之一。它不但能够使得 API
架构易于维护和扩展,而且方便了内、外部开发人员去访问 API。

gRPC

作为一个开源的高性能框架,gRPC 改进了老式的远程过程调用(Remote Procedure Call,RPC)协议。它使用 HTTP/2
这种二进制帧传输协议,简化了客户端和后端服务之间的通信和消息传递过程。

完全轻量级的 gRPC,要比 JSON 快 8 倍以上。它可以通过开源技术协议调用缓冲区,并对结构化的消息采用了一种与平台无关的序列化格式。在 API
的使用中,开发人员可以通过 gRPC,找出应该调用和评估参数值的各个过程。

Webhook

Webhook 能够将自动生成的消息,从一个应用程序发送到另一个应用程序。换句话说,它可以在两个应用之间实时建立、发送、提取更新的通信。

由于 Webhooks 可以包含关键信息,并将其传输到第三方服务器,因此我们可以通过在 Webhooks 中执行基本的 HTTP 身份验证、或是 TLS
身份验证,来保证 API 的相关安全实践。

WebSocket

WebSocket 是一种双向通信协议,可以在客户端和服务器之间提供成熟的双向通信通道,进而弥补了 HTTP 协议的局限性。

应用客户端可以使用 WebSocket 来创建 HTTP 连接请求,并发送给服务器。当初始化通信连接被建立之后,客户端和服务器都可以使用当前的 TCP/IP
连接,根据基本的消息框架协议,传输数据与信息。

XML-RPC

XML-RPC 可以通过标准化的通信过程,实现 WordPress 和其他系统之间的相互通信。它使用 HTTP 作为传输的手段,使用 XML
作为编码过程。其工作代码被存储在位于网站根目录的 xmlrpc.php 文件中。作为 WordPress 3.5 版的默认选项,XML-RPC
能够让移动应用与基于 Web 的 WordPress 安装过程,实现无缝的交互。

不过,对于每个访问请求而言,由于 xmlrpc.php 能够共享身份验证的详细信息,因此它增加了暴力攻击和 DDoS 攻击的几率。对此,我们在采用 XML-
RPC 的 API 时,需要增加相关安全实践。

JSON-RPC

对于新手而言,JSON-RPC 是一种超轻型的 RPC 协议,可用来开发基于以太坊区块链的 API。它采用
JSON(RFC4627)作为基本的数据格式,具有解释和处理多个数据结构与规则的能力。该协议可以通过相同的套接字被反复使用。

MQTT

MQTT 是 OASIS 认可的消息协议,已被广泛地用在物联网设备和工具开发领域,实现了 HTTP
类型的信息交换。由于非常轻巧,因此它可以让开发人员能够一次性扩展到数百万台设备上。在 API 安全性方面,MQTT
不但能够协助实现消息加密,而且可以轻松地应用 TLS 和身份验证。

AMQP

作为一个开放的协议,高级消息队列协议(Advanced Message Queuing
Protocol,AMQP)规定了消息提供者的行为过程,可以被应用到应用层上,创建互操作式的系统。由于是采用二进制实现的,因此该协议不但支持各种面向消息的中间件通信,而且可以确保消息的全面妥投。

XMPP

作为一整套免费的源技术,XMPP
可用于开发多方协作、即时消息、多方聊天、视频通话、以及轻量级中间件等领域。它的四个关键性组件包括:PHP、MySQL、Apache 和 Perl。

CoAP

作为一种由 RFC 7252 定义的 IETF 标准,CoAP 可以被当作标准化的 API 安全协议,来约束物联网设备上的应用。由于 CoAP 可以支持通过
LPWAN 进行通信,因此它是保护简单微控制器节点的最佳选择。CoAP 工作在 TCP/IP 层,并采用 UDP 作为基本的传输协议。

云、本地和混合部署中的 API 安全

云服务、集成平台和 API 网关等技术领域的发展,使得 API 提供商们能够以多种方式来保护 API。可以说,针对构建 API 所选择的技术栈类型,会对保护
API 产生直接的影响。例如,一个大型组织可能会使用多个带有自研 API 的应用程序。而在他们合并各种应用的过程中,可能会造成各种 API
孤岛的出现。这些孤岛往往就是安全隐患的所在。

![](https://img-
blog.csdnimg.cn/img_convert/23e880ff9d2fc32832073a43ea3b4a71.jpeg)

在异构生态系统中,跨 API 孤岛的特定 API 安全基础架构,可以被配置为 sidecar、sideband
代理,嵌入到云端与本地的部署之间。由于具有高度可移植性,因此此类安全配置可以方便任何面向未来的技术,轻松地传输或提取 API。

API 安全层

API 安全层应该是多层次的结构。各个层面各司其职,最大程度地提供安全保护。

API 发现

API 安全的第一层是 API 发现,毕竟如果不知道目标与威胁,何谈如何实施保护。如前所述,API 孤岛是阻碍安全人员发现 API 的首要问题。由于缺少
API 的可见性,它将直接妨碍 API 访问权限的管理。

![](https://img-
blog.csdnimg.cn/img_convert/52cb8628cc9c3cb0c68156d8c2edad21.jpeg)

影子 API 是 API 可见性的第二大障碍。当 API 作为应用的一部分被开发时,往往只有开发小组成员对其了如指掌,而安全人员对此类“影子
API”的实施细节不得而知。

第三大障碍便是 API 版本控制。在软件应用的生命周期中,其 API 通常需要不断地进行迭代。可是新版本的 API
往往不能立刻且全面地替换掉旧的版本。由于用户端的应用版本不尽相同,因此旧版本的 API
需要根据向后兼容的需求,继续运行一段时间。然后呢?它们会逐渐离开开发团队的视野,甚至被遗忘。这一切都是悄然发生的。

因此,API 发现实际上是 API 提供者和攻击之间的竞赛。如果提供者能够在攻击者之前发现上述类型的 API,那么他们便可以从 API
网关、负载平衡器、以及直接内联的网络流量中提取 API 的流量元数据,并通过专门的引擎,生产有效的 API 列表报告,以便与 API 管理层上的可用 API
目录进行比较。

API 安全的 OWASP 十大安全威胁

![](https://img-
blog.csdnimg.cn/img_convert/f2c117afca430f6463440b09e4667261.jpeg)

API1:2019 对象级别授权的缺陷

通常,API 端点通过发现处理对象的标识符,来获取访问控制层面的攻击。我们需要针对由客户端提供的信息,进行逐条检查。

API2:2019 用户认证的缺陷

攻击者往往会利用获取到的令牌、或验证系统的执行缺陷,来冒充合法用户,并执行非法操作。

API3:2019 过度的数据暴露

攻击者可以通过 API 的调用,合法获取的数据,推断出某些条目的相关属性,进而筛选出各种实用的信息。

API4:2019 资源不足和限流

通常,API 不会对被调用的数据进行流量或数量上的限制。而这就给攻击者留下了发起拒绝服务(DoS)等抢占资源类攻击的机会。

API5:2019 功能级授权的缺陷

有些 API 在复杂的访问控制策略上并不完备,甚至带有授权上的缺陷。这会导致攻击者可以通过函数调用,获得其他用户能够调用的资源。

API6:2019 批量分配

为了提高效率,以 JSON 方式为用户提供信息的模型,往往会提供批量分配(Mass
Assignment),而无需根据具体的许可名单,进行合法的属性筛选。据此,攻击者可以通过仔细阅读配套文档,来推测出对象的属性、查找到不同的 API
端点、或在请求负载中发掘额外的属性,进而对它们进行篡改。

API7:2019 安全配置的错误

安全配置的错误往往源于不完备的默认设计、随意的编排、开放的分布式存储、HTTP 标头的错配、宽松的跨域资产共享(Cross-Origin asset
sharing,CORS)、以及包含着敏感数据的冗长错误消息提示等方面。

API8:2019 注入

攻击者的有害信息可能会骗过输入检查,在未经适当检验的情况下,利用 SQL 或 NoSQL 的缺陷,执行恶意命令或获取信息。

API9:2019 资产管理不当

API 通常能够发现比常规 Web 应用更多的端点,这使得适当地更新配套文档就显得格外重要了。对此,我们应当持续完善 API
的相关表格,及时发现那些未被记入的端点。

API10:2019 日志和监控不足

缺乏日志记录和检查,加上事件响应能力不足,都会给 API 调用带来被攻击的威胁。

渗透测试

开发人员可以考虑使用 Postman 代理的预构建的 API 测试数据,直接与 API 进行通信。通过快速且反复地开展针对 API
的渗透测试,我们可以在降低测试成本的基础上,获取详细的报告。

由于渗透测试需要对目标 API、乃至整个系统都非常熟练,因此我们最好聘请熟练的安全团队、或使用开源的工具,去模拟针对 API
的攻击。通过定期且持续的渗透测试,开发人员将能够及时找到符合 API 保护级别的补救措施。

12 项 API 安全的优秀实践

由上述讨论可知,API 的安全性对于以数据为中心的应用开发来说,是至关重要的。下面让我们来讨论针对 API 的不同类型与阶段的安全优秀实践。

1、使用加密

为了防范破解类的攻击,我们需要对那些被用在内、外部通信的 API,使用 TLS 加密协议,并部署端到端的加密。

2、API 认证

如前文所述,身份验证可以确保 API 不会被陌生人所直接使用。同时,通过 API 密钥或访问认证,我们可以踪调 API
资源的调用。当然,此类安全措施也会增加系统的实施难度。

3、充分利用 OAuth 和 OpenID Connect

OAuth 和 OpenID Connect 的结合能够为 API 的身份验证和 / 或授权,承担全部的责任。例如,在授权过程中,API
的消费者和提供者均不直接进行授权操作,而是让 OAuth 作为委托协议,为 API 添加一个基本的保护层,并在此基础上让 OpenID Connect
标准作为额外的身份层,使用 ID 令牌去扩展 OAuth2.0。

4、安全专家

面对多种 API 安全实践,您也许会犯“选择困难症”。此时,经验丰富的安全专家可以指导您使用合适的防病毒系统、以及 ICAP(Internet
Content Adaptation Protocol)服务器,来构建稳固的 API 安全态势。

5、持续监控、审计和日志记录

常言道,预防胜过弥补。我们可以在 API 设计之初,就设置好待监控与记录的指标;而在应用服务的使用过程中,通过适当的仪表板去跟踪 API
的交互,并及时审查相关记录与错误信息。同时,在后续的调试与版本更新环节,请不要忘记让所有的 API 都得以同步。

6、仅共享有限的信息

记住,您通过 API 共享出去的信息越少,API 自身的安全性风险就越小。同时,您也应当确保在错误消息中,披露的信息尽可能地少。

此外,使用 IP 地址的白名单与黑名单,是限制 API 资源访问的好方法。它可以保证只有已授权人员或应用,才能有限地访问 API
资源,并保持接口上关键信息的隐藏性。

7、限流和配额保护

请根据后端系统、实际带宽、以及服务器的运能,合理地限制有限数量的消息,去访问某些 API,进而能够有效地防范 DDoS 攻击的威胁。

8、有效的数据

服务器应当对接受到的所有内容,进行两次检查与验证。任何新增的内容、庞大的数据集、以及由消费端共享来的信息,都应当经过验证。目前,JSON 和 XML
验证是两种被用于检查参数安全性的最广泛工具。同时,它们也可以控制 SQL 注入、以及 XML 炸弹等事件。

9、强大的基础设施

通过实施最新的安全网络技术、新型服务器与负载平衡软件,我们可以在基础设施的层面上保持 API 的安全性,使之能够抵御大数据量的泄露攻击。

10、关注 OWASP Top10

通过上文分析,您不难看出,OWASP 罗列和诠释出的十大 API 漏洞威胁,是一些最常见的攻击影响方式。它们不但对于 Web 页面,对于 API
的各种漏洞也具有极强的危害性。因此,我们需要事先做好代码级的防范工作。

11、使用 API 防火墙

为 API 构建防火墙可以起到两方面的好处:

  • 可用于执行基本的安全检查,例如:检查消息的大小、被 SQL 注入的可能性、以及是否可以立即阻断攻击。
  • 可在局域网内部融入现有的防护体系,协同提高整体安全态势。

还有兄弟不知道网络安全面试可以提前刷题吗?费时一周整理的160+网络安全面试题,金九银十,做网络安全面试里的显眼包!

王岚嵚工程师面试题(附答案),只能帮兄弟们到这儿了!如果你能答对70%,找一个安全工作,问题不大。

对于有1-3年工作经验,想要跳槽的朋友来说,也是很好的温习资料!

【完整版领取方式在文末!!】

93道网络安全面试题

![](https://img-
blog.csdnimg.cn/img_convert/6679c89ccd849f9504c48bb02882ef8d.png)

![](https://img-
blog.csdnimg.cn/img_convert/07ce1a919614bde78921fb2f8ddf0c2f.png)

![](https://img-
blog.csdnimg.cn/img_convert/44238619c3ba2d672b5b8dc4a529b01d.png)

内容实在太多,不一一截图了

黑客学习资源推荐

最后给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

1️⃣零基础入门
① 学习路线

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图 。可以说是最科学最系统的学习路线 ,大家跟着这个大的方向学习准没问题。

![image](https://img-
blog.csdnimg.cn/img_convert/acb3c4714e29498573a58a3c79c775da.gif#pic_center)

② 路线对应学习视频

同时每个成长路线对应的板块都有配套的视频提供:

![image-20231025112050764](https://img-
blog.csdnimg.cn/874ad4fd3dbe4f6bb3bff17885655014.png#pic_center)

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以点击这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

学习网络安全技术的方法无非三种:

第一种是报网络安全专业,现在叫网络空间安全专业,主要专业课程:程序设计、计算机组成原理原理、数据结构、操作系统原理、数据库系统、 计算机网络、人工智能、自然语言处理、社会计算、网络安全法律法规、网络安全、内容安全、数字取证、机器学习,多媒体技术,信息检索、舆情分析等。

第二种是自学,就是在网上找资源、找教程,或者是想办法认识一-些大佬,抱紧大腿,不过这种方法很耗时间,而且学习没有规划,可能很长一段时间感觉自己没有进步,容易劝退。

如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!

第三种就是去找培训。

image.png

接下来,我会教你零基础入门快速入门上手网络安全。

网络安全入门到底是先学编程还是先学计算机基础?这是一个争议比较大的问题,有的人会建议先学编程,而有的人会建议先学计算机基础,其实这都是要学的。而且这些对学习网络安全来说非常重要。但是对于完全零基础的人来说又或者急于转行的人来说,学习编程或者计算机基础对他们来说都有一定的难度,并且花费时间太长。

第一阶段:基础准备 4周~6周

这个阶段是所有准备进入安全行业必学的部分,俗话说:基础不劳,地动山摇
image.png

第二阶段:web渗透

学习基础 时间:1周 ~ 2周:

① 了解基本概念:(SQL注入、XSS、上传、CSRF、一句话木马、等)为之后的WEB渗透测试打下基础。
② 查看一些论坛的一些Web渗透,学一学案例的思路,每一个站点都不一样,所以思路是主要的。
③ 学会提问的艺术,如果遇到不懂得要善于提问。
image.png

配置渗透环境 时间:3周 ~ 4周:

① 了解渗透测试常用的工具,例如(AWVS、SQLMAP、NMAP、BURP、中国菜刀等)。
② 下载这些工具无后门版本并且安装到计算机上。
③ 了解这些工具的使用场景,懂得基本的使用,推荐在Google上查找。

渗透实战操作 时间:约6周:

① 在网上搜索渗透实战案例,深入了解SQL注入、文件上传、解析漏洞等在实战中的使用。
② 自己搭建漏洞环境测试,推荐DWVA,SQLi-labs,Upload-labs,bWAPP。
③ 懂得渗透测试的阶段,每一个阶段需要做那些动作:例如PTES渗透测试执行标准。
④ 深入研究手工SQL注入,寻找绕过waf的方法,制作自己的脚本。
⑤ 研究文件上传的原理,如何进行截断、双重后缀欺骗(IIS、PHP)、解析漏洞利用(IIS、Nignix、Apache)等,参照:上传攻击框架。
⑥ 了解XSS形成原理和种类,在DWVA中进行实践,使用一个含有XSS漏洞的cms,安装安全狗等进行测试。
⑦ 了解一句话木马,并尝试编写过狗一句话。
⑧ 研究在Windows和Linux下的提升权限,Google关键词:提权
image.png
以上就是入门阶段

第三阶段:进阶

已经入门并且找到工作之后又该怎么进阶?详情看下图
image.png

给新手小白的入门建议:
新手入门学习最好还是从视频入手进行学习,视频的浅显易懂相比起晦涩的文字而言更容易吸收,这里我给大家准备了一套网络安全从入门到精通的视频学习资料包免费领取哦!

如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!

  • 27
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值