了解攻击面:如何检测应用程序中的端点
什么是应用程序中的端点?
在软件和API 上下文中,端点通常是接受特定类型请求的特定URL。它表示可由客户端应用程序访问或操作的资源。例如,在一个提供访问产品数据库的Web API中,端点可能包括:
/products/{id} -返回由{id}标识的特定产品的信息
/products/update/{id} -更新由{id}标识的特定产品的信息
/products/delete/{id} -删除以{id}标识的特定产品
这些url中的每一个都表示一个端点,客户端可以使用该端点与API进行交互或修改资源。
API 端点是从客户端接收请求并从服务器返回响应的 URL。这些端点允许客户端应用程序通过向特定 URL 发送 HTTP 请求来与服务器应用程序进行交互。API 终端节点可用于检索数据、更新数据、创建新数据或删除数据。
为什么要检测端点安全?
端点是任何Web应用程序的重要组成部分,端点为用户提供了与应用程序交互的方法。然而,从安全的角度来看,端点也可能是一个重要的漏洞。在过去的一年中,94%的受访企业的生产API方面存在一些安全问题,紧随其后的是身份验证问题(40%)。
Gartner安全研究团队在一项研究中分析了17,500份安全报告,通过手动区分193个API漏洞。2022年第一季度到第二季度,从每季度的 50 次漏洞利用增加到 142 次,增长了约3倍。应用程序功能关键端点往往容易成为攻击者的目标,如访问、存储或处理敏感数据的端点,因为利用这些端点往往会产生严重的影响和安全隐患。
安全端点管理实践
定期创建和更新端点文档
创建和持续更新端点文档是执行安全端点管理的简单和有效方法。组织应定期更新端点文档,尤其是在对应用程序的代码或功能进行重大更改之后。这有助于确保文档准确且最新。每当将新功能、代码段或功能引入应用程序时,都将其添加到端点文档审核或更新。通过定期集成这些审核和更新,使开发人员能够持续了解端点管理。
验证端点可以接收的用户输入
验证是检查或证明某事或对象(在本例中是用户输入数据)的有效性或准确性的操作。验证用户提供的输入是保护应用程序和防止恶意攻击(如注入攻击或跨站点脚本攻击)的重要步骤。下面是一些验证用户输入的常见步骤:
- 定义一组验证规则
- 验证输入
- 清理输入
- 使用类型检查
- 使用参数化查询
- 使用第三方库
验证用户提供的输入的关键是定义一组规则来定义可接受的输入格式和类型,然后根据这些规则验证和清理输入。
定期扫描应用程序并运行代码审查
定期扫描应用程序并运行代码评审可以按照以下步骤:
定期执行渗透测试:定期对应用程序进行渗透测试,以识别应用程序安全性中可能存在的漏洞或缺陷。这将有助于识别应用程序和端点基础结构中可能存在的潜在安全漏洞。
定期进行代码审查:进行代码审查可以检测应用程序的源代码安全性。开发人员可以通过代码审查在开发过程早期发现安全问题,并在潜在漏洞进入生产中成为更严重和代价更高的问题之前发现并解决。代码审查还可以帮助确保开发人员遵循安全编码实践,例如输入验证和参数化查询。
将安全性集成到 SDLC中:采用安全的软件开发生命周期(SDLC),从设计到测试和部署,在一开始就将安全性融入应用程序开发过程中。实施常规安全实践,如输入验证、参数化查询和密码哈希,确保应用程序和相应的端点安全。
通过遵循这些步骤,可以定期测试应用程序并运行代码审查,确保没有未知和不安全的端点并提高应用程序的整体安全性。
来源:
https://www.softwaresecured.com/understanding-your-attack-surface-how-to-measure-endpoints-in-your-application/