保护REST API的最佳方法是什么?

时间:2017-03-09 12:15:38

标签: java rest security servlets jersey

我正在使用Jersey开发一个带有Java的REST API,保护它的最佳方法是什么?我查看了基于密码的身份验证,Servlet Context的各种事情,我听说过标记化等等。但是,保护它的行业标准方法是什么,并确保没有人可以通过在浏览器中输入网址从GET请求获取数据,只需从POST进行PostMan调用即可上?有关实施这种最佳方式的任何学习材料吗?

简单的英文,我要问的是,如何通过确保API只能访问我们的应用程序来保护我的REST API?这样做的方法可以是从密码到令牌的任何方法。我正在学习它现在试图实现它,但在我需要知道要学习什么之前,因为我正在寻找最佳实践和行业标准的方法。

1 个答案:

答案 0 :(得分:3)

这是开始保护API的好地方:

  1. 使用HTTPS
  2. 使用用户名/密码进行身份验证
  3. 当用户成功登录时,您将为其生成令牌
  4. 将令牌分配给该用户(简单方法是将其保存在数据库中)
  5. 要求用户在每次请求时发送该令牌
  6. 在回复任何请求之前验证令牌
  7. 据说有一些担忧。你应该研究如何实现这些目标:

    • 如果您的数据库遭到入侵,请以加密形式在您的数据库中存储凭据。

    • 如果您将令牌存储在数据库中,验证需要进行数据库查找,这是一个问题,您是否期望负载过重?

    • 如果您使用无状态身份验证,例如JWT,那么如果需要,如何撤消访问权限。 (提示:查看访问+刷新令牌方案+黑名单)

    • 如何运输令牌,标题,Cookie?

    • 保护您的API免受跨站点脚本(a.k.a.XSS)和跨站点请求伪造(a.k.a.CSRF或XSRF)。

    注意:这些只是一些快速的想法,你可以在网上找到很多关于这些的信息。