[英]How to secure Rest Based API?
我们打算开发基于REST的API。 我探讨了该主题,但看来,当您的客户端是应用程序时,您可以保护api(因此有很多方法,例如公钥-私钥等)。 那么网站/移动网站呢,如果我们正在访问不使用任何登录名访问内容的网站中基于Rest的api(登录将是可选的),那么我们如何限制其他人访问基于rest的api?
使用Oauth2.0是否有意义? 我对此不清楚。
更明确的问题是,对于不使用任何登录信息的网站,我们如何确保通过Web公开的获取或发布请求?
如果这是简单的get request或post request,它将在特定输入上返回json数据,那么我现在拥有移动网站,该网站将使用get request或post request访问这些数据以获取数据。 好吧,其他人也可以访问它,问题是我没有使用登录名,用户可以直接访问数据。 但是我们如何限制其他人访问该数据。
您认为保护不使用REST的网站与使用REST API的网站之间的区别是什么?
OAuth在REST架构中为您的站点提供授权功能,这意味着移动应用程序的用户必须提供其凭据才能被允许访问该资源。 然后,应用程序可以确定该用户是否有权访问所请求的资源。 但是,您已经说过您的网站不需要使用授权。
您可以使用证书,但是可以为每个客户端管理证书。 我的看法是为了您的解释,您无需保护网站,因为您将永远无法管理客户端与服务器之间的信任关系。 但是有一些选择:
可能还有其他人,但您了解基本概念。 我再次认为,如果您的资源不需要授权,则不需要保护该REST API。 请问您通过此REST API或提供的功能公开了哪些数据? 这可能有助于提供更好的答案。
您需要授权:仅应允许某些代理(移动客户端)和/或用户访问这些API。
要解决该问题,您需要标识:服务器识别谁是谁(或什么)的一种方法,以便可以做出正确的决定。
提供多种形式的身份验证的方式有很多,具体取决于您对安全性的重视程度。
最简单的是特定于您的移动客户端的用户代理字符串。 但是它很容易被伪造。 基于客户端的“秘密”稍微难于伪造-在您的移动客户端代码中嵌入某种秘密或密钥。 您可以使其变得非常复杂和秘密,但是正如ramsinb所指出的那样,您无法以这种方式获得安全性,因为这将需要您能够保证与客户端一起提供的秘密(无论是代码,算法还是任何其他花哨的构造)都不会受到损害或进行反向工程。 当您不控制客户端时,不会发生。
从那里,有3个选择:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.