我正在设计一个REST API,而且我有点奇怪。 99%的API将受到保护,但有一些功能需要公开访问。这些与帐户创建和初始密码设置有关。一旦他们拥有凭证,他们就可以访问API的其余部分。
允许用户通过注册表单创建新帐户的端点未经身份验证。保护这个端点并不是真的可能,因为我在nodejs上使用AngularJS,并通过AJAX调用来喂我的API。这意味着我无法在任何地方隐藏凭据以访问AccountCreation端点。目前,我让webform对另一个端点进行AJAX调用,并创建一个表示形式有效的令牌。提交后,验证令牌,然后从数据库中删除。但是,这个令牌端点在代码中显然是可见的,所以那里安全性不高。电子邮件验证用于激活'该帐户,然后为用户提供一次性链接以设置其初始密码,该密码也驻留在未经身份验证的端点上(但需要在电子邮件中发送令牌)。
我想我的担心是有人在发送“CreateAccount”信息。端点,并创建一堆帐户。实际上我猜他们也可以通过网络表单来做到这一点。这是一个有效的安全问题吗?大多数地方如何处理未经身份验证的帐户创建网络表单?
编辑:最终的应用程序将通过https运行