Part 1
什么是API
API(Application Programming
Interface,应用程序接口)是一些预先定义的接口(如函数、HTTP接口),或指软件系统不同组成部分衔接的约定。用来提供应用程序与开发人员基于某软件或硬件得以访问的一组例程,而又无需访问源码,或理解内部工作机制的细节。
通过API,就算不知道如何操作,也能将产品或服务与其他产品或服务进行互通。这样就可以简化应用开发,节省时间和成本。在开发新的工具和产品或管理现有工具和产品时,强大灵活的API可以帮助简化设计、管理和使用,并带来更多创新机遇。
API有时被视为 “合同”,而 “合同” 文本则代表了各方之间的协议:如果一方以特定方式发送远程请求,该协议规定了另一方的软件将如何做出响应。
API发展简史
API概念的出现,始于计算机时代的初期,远远早于个人电脑诞生之前。当时,API常被当作操作系统的库,而且基本上都在本地系统上运行,仅偶尔用于大型机之间传递消息。将近30年后,API走出了它们的本地环境。到了21世纪初,API成为了用于实现数据远程集成的一种重要技术。
远程API和Web API的区别
远程API旨在通过通信网络进行互动。这里的"远程"是指API操控的资源不在提出请求的计算机上。由于互联网是应用最广泛的通信网络,所以大多数API都是基于Web标准来设计的。并非所有的远程API都是Web
API,但可以认为Web API都是远程API。
Web
API通常会使用HTTP来传输请求消息,并提供响应消息的结构定义。这些响应消息通常都会以XML或JSON文件的形式来提供。XML和JSON都是首选格式,因为它们会以易于其他应用操纵的方式来呈现数据。
REST与SOAP的区别
随着Web
API的不断普及,相应的协议规范也随之产生了,从而推动了信息交换的标准化:简单对象访问协议,简称SOAP。使用SOAP设计的API会使用XML格式来收发消息,并通过HTTP或SMTP来接收请求。使用SOAP时,在不同环境中运行的应用或使用不同语言编写的应用能够更加轻松地共享信息。
相关的规范还有一个,即表述性状态传递(REST)。遵循REST架构约束的Web API 被称为RESTful
API。REST与SOAP有着根本区别:SOAP是一种协议,而REST是一种架构模式。这意味着RESTful Web API没有官方标准。正如Roy
Fielding在论文"Architectural Styles and the Design of Network-based Software
Architectures"(架构模式以及基于网络的软件架构的设计)中定义的那样,只要API 符合RESTful系统的6个导向性约束,就算作RESTful
API:
-
客户端/服务器架构:REST 架构由客户端、服务器和资源构成,通过HTTP来处理请求。
-
无状态:请求所经过的服务器上不会存储任何客户端内容。与会话状态相关的信息会存储在客户端上。
-
可缓存性:通过缓存,可免去客户端与服务器之间的某些交互。
-
分层系统:客户机与服务器之间的交互可以通过额外的层来进行调解。这些层可以提供额外的功能,如负载均衡、共享缓存或安全防护。
-
按需代码(可选):服务器可通过传输可执行代码来扩展客户端的功能。
-
统一接口:这项约束是RESTful API的设计核心,共涵盖 4 个层面:
-
识别请求中的资源:请求中的资源会被识别,并与返回给客户端的表示内容分离开来。
-
通过不同的表示内容来操纵资源:客户端会收到表示不同资源的文件。这些表示内容必须提供足够的信息,以便执行修改或删除操作。
-
自描述消息:返回给客户端的每个消息都包含充足的信息,用于指明客户端应该如何处理所收到的信息。
-
将超媒体作为应用状态的引擎:在访问某个资源后,REST客户端应该能够通过超链接来发现当前可用的所有其他操作。
-
虽然看似有很多约束需要遵循,但是这些约束遵循起来要比遵循规定的协议容易得多。因此,RESTful API现在变得比SOAP更为普及。
近年来,OpenAPI规范已成为定义REST API的通用标准。OpenAPI为开发人员提供了一种与语言无关的方式来构建REST
API接口,从而最大程度减少不确定的因素,让用户安心工作。
面向服务的架构(SOA)和微服务架构
最常使用远程API的两种架构方案分别是:面向服务的架构(SOA)和微服务架构。在这2种方案中,SOA的历史更为久远一些。最初,它是在单体式应用的基础上经过改进而形成的。虽然单个单体式应用也可以完成各种操作,但通过某种集成模式(如企业服务总线(ESB))在不同应用间实现松散耦合后,即可获得某些功能。
从大多数层面来看,SOA都要比单体式架构更简单,但是,如果无法明确理解各种组件交互,SOA也可能会进一步加剧整个环境的复杂性。这种复杂性的加剧会重新引发
SOA 想要解决的某些问题。
对于专用松散耦合服务的使用,微服务架构与SOA模式类似。但是,微服务架构会对传统架构进行进一步细分。在微服务架构中,服务会采用通用消息传递框架,如RESTful
API。它们会使用RESTful API来实现相互通信,且无需执行繁琐的数据转换处理或使用其他的集成层。使用RESTful
API可以加速新功能和新更新的交付;甚至还可以说,是这类API促进了这种速度的提升。该架构中的每一个服务都呈离散状态。一个服务可以被取代、增强或丢弃,而不会影响架构中的任何其他服务。这种轻量级架构有助于优化分布式资源或云资源,而且能够支持个别服务的动态扩展。
Part 2
什么是API安全
API 安全防护就是保护 API(包括拥有和使用中的 API)的完整性。
Web API安全防护主要关注通过API与互联网的数据传输。
Web API安全性包括API访问控制和隐私,以及通过OWASP API Security Top
10中所述的API逆向工程和对API漏洞的利用来检测和补救对API的攻击。
因为他们通常可以通过公共网络(从任何地方访问)获得,所以API通常都有很好的文档记录或易于逆向工程。API对拒绝服务(DDOS)类型的事件也非常敏感,因此对于不良行为者来说,它们是很有吸引力的目标。
攻击包括绕过客户端应用程序,以试图破坏其他用户的应用程序功能或破坏私人信息等。API安全性专注于保护此应用程序层并解决恶意黑客直接与API交互时可能发生的情况。
REST API 安全防护与SOAP API 安全防护对比
大多数API实现属于REST(表述性状态传递)或SOAP(简单对象访问协议)。
REST
API使用HTTP并且支持传输层安全性(TLS)加密。TLS是确保互联网连接私密性的一个标准,可以检查两个系统(服务器与服务器或服务器与客户端)之间发送的数据是否受到加密且未被篡改。这意味着,如果黑客试图从购物网站套取信用卡信息,他们会无法读取或修改数据。如果URL的开头是"HTTPS"(超文本传输安全协议),那么该网站就使用了TLS保护。
REST API也使用JavaScript对象表示法(JSON),这是一种能够更轻松通过Web浏览器传输数据的文件格式。通过使用HTTP和JSON,REST
API不需要存储或重新打包数据,因此速度要比SOAP API快得多。
SAP API使用称为Web服务安全性(WS 安全性)的内置协议。这类协议会定义一套采用保密和身份验证的规则集。SOAP
API支持两大国际标准机构(结构化信息标准促进组织(OASIS)和万维网联盟(W3C))制定的标准,它们结合使用XML加密、XML
签名和SAML令牌来验证身份和授权。通常而言,SOAP
API因具有更加全面的安全措施而受到推崇,但它们也需要更多的管理。因此,处理敏感数据的机构更推荐采用SOAP API。
使用XML加密、XML
签名和SAML令牌来验证身份和授权。通常而言,SOAP
API因具有更加全面的安全措施而受到推崇,但它们也需要更多的管理。因此,处理敏感数据的机构更推荐采用SOAP API。
接下来我将给各位同学划分一张学习计划表!
学习计划
那么问题又来了,作为萌新小白,我应该先学什么,再学什么?
既然你都问的这么直白了,我就告诉你,零基础应该从什么开始学起:
阶段一:初级网络安全工程师
接下来我将给大家安排一个为期1个月的网络安全初级计划,当你学完后,你基本可以从事一份网络安全相关的工作,比如渗透测试、Web渗透、安全服务、安全分析等岗位;其中,如果你等保模块学的好,还可以从事等保工程师。
综合薪资区间6k~15k
1、网络安全理论知识(2天)
①了解行业相关背景,前景,确定发展方向。
②学习网络安全相关法律法规。
③网络安全运营的概念。
④等保简介、等保规定、流程和规范。(非常重要)
2、渗透测试基础(1周)
①渗透测试的流程、分类、标准
②信息收集技术:主动/被动信息搜集、Nmap工具、Google Hacking
③漏洞扫描、漏洞利用、原理,利用方法、工具(MSF)、绕过IDS和反病毒侦察
④主机攻防演练:MS17-010、MS08-067、MS10-046、MS12-20等
3、操作系统基础(1周)
①Windows系统常见功能和命令
②Kali Linux系统常见功能和命令
③操作系统安全(系统入侵排查/系统加固基础)
4、计算机网络基础(1周)
①计算机网络基础、协议和架构
②网络通信原理、OSI模型、数据转发流程
③常见协议解析(HTTP、TCP/IP、ARP等)
④网络攻击技术与网络安全防御技术
⑤Web漏洞原理与防御:主动/被动攻击、DDOS攻击、CVE漏洞复现
5、数据库基础操作(2天)
①数据库基础
②SQL语言基础
③数据库安全加固
6、Web渗透(1周)
①HTML、CSS和JavaScript简介
②OWASP Top10
③Web漏洞扫描工具
④Web渗透工具:Nmap、BurpSuite、SQLMap、其他(菜刀、漏扫等)
那么,到此为止,已经耗时1个月左右。你已经成功成为了一名“脚本小子”。那么你还想接着往下探索吗?
阶段二:中级or高级网络安全工程师(看自己能力)
综合薪资区间15k~30k
7、脚本编程学习(4周)
在网络安全领域。是否具备编程能力是“脚本小子”和真正网络安全工程师的本质区别。在实际的渗透测试过程中,面对复杂多变的网络环境,当常用工具不能满足实际需求的时候,往往需要对现有工具进行扩展,或者编写符合我们要求的工具、自动化脚本,这个时候就需要具备一定的编程能力。在分秒必争的CTF竞赛中,想要高效地使用自制的脚本工具来实现各种目的,更是需要拥有编程能力。
零基础入门的同学,我建议选择脚本语言Python/PHP/Go/Java中的一种,对常用库进行编程学习
搭建开发环境和选择IDE,PHP环境推荐Wamp和XAMPP,IDE强烈推荐Sublime;
Python编程学习,学习内容包含:语法、正则、文件、 网络、多线程等常用库,推荐《Python核心编程》,没必要看完
用Python编写漏洞的exp,然后写一个简单的网络爬虫
PHP基本语法学习并书写一个简单的博客系统
熟悉MVC架构,并试着学习一个PHP框架或者Python框架 (可选)
了解Bootstrap的布局或者CSS。
阶段三:顶级网络安全工程师
如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!
学习资料分享
当然,只给予计划不给予学习资料的行为无异于耍流氓,这里给大家整理了一份【282G】的网络安全工程师从入门到精通的学习资料包,可点击下方二维码链接领取哦。
