简介
Serverless 是一种新型的云计算架构,它可以让开发者专注应用程序的业务逻辑而不是基础设施搭建。Serverless 架构最常见的应用就是 RESTful API,这种 API 基于 HTTP 协议,用于实现网站、移动应用和物联网等场景中的数据传输和交换。
虽然 Serverless REST API 极其方便快捷,但其却存在着诸多安全漏洞,这些漏洞往往会使得黑客顺利入侵我们的系统。对于服务器端的攻击防御,很多人已经习以为常,该如何保护 Serverless REST API 呢?
本文将介绍 Serverless REST API 一些常见的安全漏洞,并分享防御这些漏洞的技术方法。
Serverless REST API 的安全漏洞
- 跨站请求伪造(CSRF)
跨站请求伪造(CSRF)是一种常见的攻击方式,攻击者通过构造恶意请求,在用户无意中触发这些请求,达到操作受害者帐户的目的。攻击者可以伪造出域名和内容和正常合法请求一模一样的请求,但请求头不同。
对于 Serverless REST API 站点,防御 CSRF 攻击的方式与传统 Web 应用程序一样,即使用 CSRF 令牌。对于 POST,PUT,DELETE 等需要写入操作的请求,应该在请求中传递 CSRF 令牌。
- 跨站脚本攻击(XSS)
跨站脚本攻击(XSS)是一种常见的应用程序漏洞,攻击者将有害代码插入到 Web 页面中,当本应该由浏览器执行的 JavaScript 代码变成了由攻击者构造的 JavaScript 代码时就会发生 XSS 攻击。
对于 Serverless API,防御 XSS 攻击的方式与传统 Web 应用程序一样,即过滤用户的输入内容。
- SQL 注入
SQL 注入是指攻击者向应用程序提交恶意的 SQL 语句(例如在一个输入框中输入 SQL 语句),从而导致应用程序执行恶意的 SQL 语句,攻击者可以互相结合 SQL 注入及其他形式的攻击方式,最终控制数据库,获得机密信息。
对于 Serverless REST API 站点,防御 SQL 注入攻击的方式与传统 Web 应用程序一样,即使用参数化查询。
防御 Serverless REST API 的安全漏洞
- 使用 AWS WAF
AWS WAF (Web Application Firewall) 是 AWS 的一种网络防火墙,它可以过滤请求,防止应用端漏洞造成的攻击。
使用 AWS WAF,你可以定义规则来控制暴力破解、跨站脚本、SQL 注入等常见的攻击方式。当规则检测到恶意请求时,WAF 可以阻止请求被转发到 Lambda,从而保护你的 API。
- Lambda 函数授权和资源策略
为了限制访问没有权限的 API,可以通过向程序发布的 Lambda 函数添加资源策略以授权 AWS 账户间对函数的访问。是否需要权限根据使用情况而定,可以在 Lambda 控制台中进行设置。
- 密钥管理服务
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