【问题标题】:Secure Rest-Service before user authentification用户认证前的安全 Rest-Service
【发布时间】:2016-11-20 19:00:09
【问题描述】:

我有一个提供多种休息服务的 Web 应用程序(Jersey)。大多数端点都由 BASIC 身份验证保护。此外,我使用 SSL 进行传输,并为每个呼叫请求 POST。 客户端/消费者是安卓应用。

到目前为止一切顺利。唯一似乎易受攻击的服务是注册。这是调用的“第一个”服务,并且用户还不存在。所以我不能使用 OAuth 等。我还必须保持端点易于访问以使用户能够注册。

如何保护此服务,使其不会被充斥我数据库的机器人发送垃圾邮件?

【问题讨论】:

  • 客户端是否来自已知用户组?或者只是外面的任何人?
  • 只是任何下载了该应用程序的人......至少我希望如此。其余服务可通过互联网访问。它也可以是任何其他客户......

标签: java web-services rest security


【解决方案1】:

这些怎么样?

  1. 在请求参数中使用带有令牌的注册链接。确保令牌在某个时间后过期。您也可以为客户端创建一个令牌端点 url 以获取有效令牌。
  2. 在您的请求中使用自定义标头或动态自定义标头。此外,您可以检查动态自定义标头以验证请求的真实性。
  3. 在注册完成后使用注册确认工作流程,例如电子邮件/文本验证。每天运行一个流程以删除任何用户帐户,这些帐户在 x 天内未经过验证。

我认为您不能真正以 HTTP 方式保护注册 URL。恕我直言,任何拥有注册网址的人都可以成为尝试注册的合适人选。所以如果你问我,选项 3 比其他选项更好。

【讨论】:

  • ...正如我所怀疑的那样。我已经按照您的建议使用了注册确认工作流程。我将它与一些 IPTABLES 规则结合起来,以限制在短时间内从同一 IP 建立的连接数量,以防止 ddos​​ 攻击。此外,我考虑了 GCM-Notifications 以确保我正在与特定设备交谈......甚至 CAPTCHA 都在我脑海中闪过 :-) 我会考虑的。感谢您的帮助。
  • 不用担心。当您说任何实体时,我考虑了非基于 UI 的客户端。所以验证码不是一个选择,但是我认为你已经在这方面介绍了很多。
猜你喜欢
  • 2011-11-03
  • 1970-01-01
  • 2016-05-10
  • 2011-05-12
  • 1970-01-01
  • 1970-01-01
  • 2011-04-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多