我正在使用 Jersey
用Java开发REST API,保护它的最佳方法是什么?我查看了基于密码的身份验证的各种事情, Servlet Context
,我听说过标记化等等 . 但是什么是保护它的行业标准方法,并确保没有人可以通过在浏览器中输入URL来获取 GET
请求中的数据,只需从 PostMan
进行 POST
calll等等?有关实施这种最佳方式的任何学习材料?
用简单的英语,我要问的是,如何通过确保API只能访问我们的应用程序来保护我的REST API?这样做的方法可以是从密码到令牌的任何方法 . 我正在学习它现在试图实现它,但在我需要知道要学习什么之前,因为我正在寻找最佳实践和行业标准的方法 .
1 回答
这是开始保护您的API的好地方:
使用HTTPS
使用用户名/密码进行身份验证
用户成功登录后,将为其生成令牌
将令牌分配给该用户(简单方法是将其保存在数据库中)
要求用户在每次请求时发送该令牌
在响应任何请求之前验证令牌
据说有一些问题 . 你应该研究如何实现这些:
如果您的数据库受到威胁,请以加密形式在您的数据库中存储凭据 .
如果您将令牌存储在数据库中,验证需要进行数据库查找,这是一个问题,您是否期望负载过重?
如果您使用无状态身份验证,例如JWT,那么如果需要,如何撤消访问权限 . (提示:查看访问刷新令牌方案的黑名单)
如何运输您的令牌, Headers ,cookie?
保护您的API免受跨站点脚本(a.k.a.XSS)和跨站点请求伪造(a.k.a.CSRF或XSRF) .
注意:这些只是一些快速的想法,你可以在网上找到很多关于这些的信息 .