Serverless REST API 饱受攻击

阅读时长 5 分钟读完

简介

Serverless 是一种新型的云计算架构,它可以让开发者专注应用程序的业务逻辑而不是基础设施搭建。Serverless 架构最常见的应用就是 RESTful API,这种 API 基于 HTTP 协议,用于实现网站、移动应用和物联网等场景中的数据传输和交换。

虽然 Serverless REST API 极其方便快捷,但其却存在着诸多安全漏洞,这些漏洞往往会使得黑客顺利入侵我们的系统。对于服务器端的攻击防御,很多人已经习以为常,该如何保护 Serverless REST API 呢?

本文将介绍 Serverless REST API 一些常见的安全漏洞,并分享防御这些漏洞的技术方法。

Serverless REST API 的安全漏洞

  1. 跨站请求伪造(CSRF)

跨站请求伪造(CSRF)是一种常见的攻击方式,攻击者通过构造恶意请求,在用户无意中触发这些请求,达到操作受害者帐户的目的。攻击者可以伪造出域名和内容和正常合法请求一模一样的请求,但请求头不同。

对于 Serverless REST API 站点,防御 CSRF 攻击的方式与传统 Web 应用程序一样,即使用 CSRF 令牌。对于 POST,PUT,DELETE 等需要写入操作的请求,应该在请求中传递 CSRF 令牌。

  1. 跨站脚本攻击(XSS)

跨站脚本攻击(XSS)是一种常见的应用程序漏洞,攻击者将有害代码插入到 Web 页面中,当本应该由浏览器执行的 JavaScript 代码变成了由攻击者构造的 JavaScript 代码时就会发生 XSS 攻击。

对于 Serverless API,防御 XSS 攻击的方式与传统 Web 应用程序一样,即过滤用户的输入内容。

  1. SQL 注入

SQL 注入是指攻击者向应用程序提交恶意的 SQL 语句(例如在一个输入框中输入 SQL 语句),从而导致应用程序执行恶意的 SQL 语句,攻击者可以互相结合 SQL 注入及其他形式的攻击方式,最终控制数据库,获得机密信息。

对于 Serverless REST API 站点,防御 SQL 注入攻击的方式与传统 Web 应用程序一样,即使用参数化查询。

防御 Serverless REST API 的安全漏洞

  1. 使用 AWS WAF

AWS WAF (Web Application Firewall) 是 AWS 的一种网络防火墙,它可以过滤请求,防止应用端漏洞造成的攻击。

使用 AWS WAF,你可以定义规则来控制暴力破解、跨站脚本、SQL 注入等常见的攻击方式。当规则检测到恶意请求时,WAF 可以阻止请求被转发到 Lambda,从而保护你的 API。

  1. Lambda 函数授权和资源策略

为了限制访问没有权限的 API,可以通过向程序发布的 Lambda 函数添加资源策略以授权 AWS 账户间对函数的访问。是否需要权限根据使用情况而定,可以在 Lambda 控制台中进行设置。

  1. 密钥管理服务

AWS 的密钥管理服务(KMS)是一种云服务,可以让你安全地创建和控制加密密钥。在使用 Serverless REST API 时,可以使用 KMS 来保护敏感数据。

例如,你可以将 Lambda 函数 key-value 存储中的敏感数据存储在 KMS 中,使用 KMS 的解密服务返回受保护的数据。使用 KMS 不仅可以将数据安全地存储在云中,而且可以确保只有有权限的实体才能访问数据。

代码示例

下面是一个基于 AWS Lambda 和 API Gateway 的 Serverless REST API 的例子,演示了如何使用 CSRF 令牌和参数化查询防范 CSRF 和 SQL 注入攻击。

-- -------------------- ---- -------
-- -- --- ------- -----
--------------- - ----- ------- -- -
  ----- ----- - ----------------------------
  ----- ---- - -----------------------
  ----- -- - --- ------------------------------

  -- -- ---- --
  -- ------ --- ------------- -
    ----- -------- - -
      ----------- ----
      ----- ---------------- -------- -------- ---- ------ --
    --
    ------ ---------
  -

  -- ---------- --- ----
  ----- ------ - -
    ---------- --------
    ----- -
      ----- --------
      ------- ----------
      -------- ----------
    -
  --

  --- -
    ----- -------------------------

    ----- -------- - -
      ----------- ----
      ----- ---------------- -------- ----- ------- ------------- --
    --
    ------ ---------
  - ------------ -
    ----- -------- - -
      ----------- ----
      ----- ---------------- -------- ----- --
    --
    ------ ---------
  -
--

总结

本文介绍了 Serverless REST API 的常见安全漏洞,如 CSRF、XSS 和 SQL 注入,以及防御这些漏洞的措施,如使用 AWS WAF、Lambda 函数授权和资源策略以及密钥管理服务。同时提供了一个基于 AWS Lambda 和 API Gateway 的 Serverless REST API 的演示代码示例,展示了如何使用 CSRF 令牌和参数化查询预防 CSRF 和 SQL 注入攻击。希望这篇文章对你有所帮助。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/646f308b968c7c53b0d9643b

纠错
反馈