保护注册RESTful API以防止注册许多用户

jmo*_*awy 13 security rest

我正在开发RESTful APIsASP.NET WebAPI一个Android application并没有通过我们的应用程序进行注册的选项.假设我们的注册端点类似于'/ api/register /',其中包含'username','password'和'email address'等参数.因此,这个端点很可能不仅适用于Android设备,也适用于所有人.

我的意思是很容易跟踪我们服务器的所有请求和响应,因此一个坏人可能会调用此端点开始在我们的系统中注册许多用户.

我想知道如何保护我的API?

Cah*_*hit 10

您可以采取一些步骤来确保随机客户端无法调用您的API.这些对99.9%的潜在威胁都有效,但请记住,如果某人非常投入并且能够反编译您的Android应用程序和中间人与您的应用程序的连接,他们仍然可能会破坏您的安全性.(除非你试图保护真正高价值的目标,否则我不会担心这种特殊情况.)

对于基本保护级别:

  • 仅允许SSL连接,并要求" 严格传输 - 安全 "
  • 使用将在服务器上验证的共享密钥(例如,预定义的api密钥,预安装的客户端证书等)
  • 在服务器上调用API调用
  • 确保您的API不会遇到其他常见的安全隐患(使用OWASP清单:https://www.owasp.org/index.php/REST_Security_Cheat_Sheet)

为了提高安全性,您需要实现某种预身份验证,类似于我在此处描述的流程:

  • 客户端要求服务器提供访问令牌.
  • 令牌对于客户端是唯一的,并使用客户端IP,请求时间和共享密钥生成.它也是短暂的,很快就会到期.
  • 客户端在它仍处于活动状态时使用唯一令牌进行API调用.
  • 服务器验证令牌,确认它来自授权客户端并处理API调用.

这个主题更复杂,不幸的是我没有遇到一个我可以指出的简单例子.