Java 用户身份验证前的安全Rest服务

Java 用户身份验证前的安全Rest服务,java,web-services,rest,security,Java,Web Services,Rest,Security,我有一个web应用程序,它提供了几个rest服务(Jersey)。大多数端点都通过基本身份验证进行保护。此外,我还使用SSL进行传输,并在每次通话中发送请求。 客户端/消费者是android应用程序 到目前为止还不错。唯一易受攻击的服务是注册。这是“第一个”呼叫的服务,用户还不存在。因此,我不能使用OAuth等。我还必须使端点易于访问,以便用户能够注册 如何保护此服务,使其不会被淹没我的数据库的机器人垃圾邮件?这些如何 在请求参数中使用带有令牌的注册链接。确保代币在一段时间后过期。您还可以为客户

我有一个web应用程序,它提供了几个rest服务(Jersey)。大多数端点都通过基本身份验证进行保护。此外,我还使用SSL进行传输,并在每次通话中发送请求。 客户端/消费者是android应用程序

到目前为止还不错。唯一易受攻击的服务是注册。这是“第一个”呼叫的服务,用户还不存在。因此,我不能使用OAuth等。我还必须使端点易于访问,以便用户能够注册

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

这些如何

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

  • 我不认为你真的可以用HTTP的方式保护注册URL。我的意思是,任何拥有注册url的人都可以成为尝试注册的合适人选。因此,如果你问我,选项3比其他选项更好。

    客户是否来自已知用户组?或者仅仅是来自那里的任何人?仅仅是下载了应用程序的任何人…至少我希望如此。rest服务可通过互联网访问。它也可以是任何其他客户。。。。。。正如我所怀疑的那样。我已经按照您的建议使用了注册确认工作流。我将其与一些IPTABLES规则相结合,以限制在短时间内从同一IP建立的连接数量,从而防止ddos攻击。此外,我还考虑了GCM通知,以确保我使用的是特定设备。。。甚至连CAPTCHA都在我脑海中闪过:-)我会考虑的。谢谢你的帮助,不用担心。我考虑过非基于用户界面的客户机,当你说任何ENT时。所以CAPTCHA不是一个选择,但是我认为你已经在这方面做了很多。