有没有办法保护公共端点?

fle*_*exi 1 security rest

我认为公共 REST api(例如注册端点)无法对用户进行身份验证是否正确。例如,我们的端点应该只接受来自我们的移动应用程序和未来 Web 应用程序的请求。

我很确定这在逻辑上是不可能的。我认为苹果和谷歌为服务器提供了一种方法(像 ca 一样)来识别来自注册设备的请求,但是将 API 更改为私有设备。由于身份验证实质上已移至应用商店,因此只有应用商店帐户的所有者才能使用它。

因此,将其完全公开以防止机器人攻击它的唯一方法是使用电子邮件确认和自动删除(如果在 x 时间内未确认)和 IP 速率限制。

一位承包商建议我们在每个应用程序中使用硬编码的唯一密钥,然而,在我看来这听起来不合逻辑且完全错误。当用户在他们的设备上下载应用程序时,应用程序和服务器之间的秘密就会被泄露。

那么我对密钥的看法是否正确,还有其他方法可以保护端点免受机器人攻击吗?我唯一能想到的另一件事是使用验证码。

roo*_*oot 6

这里有两件不同的事情。

保护公共 REST API

如果攻击者下载并逆向工程应用程序,那么即使是不对称的秘密,也会受到损害,这一点是正确的。攻击者可以使用调试器、Chrome 开发人员工具和 Wireshark 等工具进行逆向工程并找到秘密。

通常,攻击者可以模仿应用程序或用户的行为,即以非常相似的模式发出相同的请求。

当今行业对此采取的方法是使用Web 应用程序防火墙等工具过滤掉尽可能多的攻击者,并且越来越多地使用适用于 Web、移动设备和 API 的机器人管理解决方案

工具越好,攻击者需要做的工作就越多,因此攻击者愿意做的工作就越少,因此被攻击的机会就越小。

安全认证

身份验证是上述情况的一个特例,但是这个问题是当前(之一)Web 应用程序面临的最大问题。

目前采用的主要解决方案是机器人过滤技术,例如 CAPTCHA(机智的攻击者可以克服)和多因素身份验证。

如今,无需电子邮件即可注册的情况非常罕见,但是可以使用10 分钟邮件之类的服务来解决此问题。设置自己的邮件服务器实际上也不是很困难。

登录更加困难,因为您不能指望人们通过电子邮件,甚至其他 MFA 方法也很烦人。您可以将 MFA 用于您的银行帐户,但不能将 MFA 用于您的 Domino's Pizza 帐户。

因此,网络攻击的最新流行是帐户接管

所有提供 WAF 和机器人管理的安全供应商也尝试保护注册和登录等 API,并取得了不同程度的成功。甚至有专用产品也开始出现。