我如何保护API?

时间:2013-01-29 11:37:04

标签: web-services web security

我目前正在开发一个单页面的Web应用程序。 Web应用程序将调用类似REST的API进行身份验证和数据存储。我们目前正在保护应用程序,并制定了保护网站的策略,因此只有注册用户才能获得访问权限。但我们还要做的一件事是保护其他人编写自己的应用程序的API,或者通过我们的Web应用程序以任何其他方式访问它。我认为问题是API将对所有人开放,而不仅仅是我的Web应用程序。

任何知道如何做到这一点的人,或者谁能指出我正确的方向。因为现在,没有线索。

4 个答案:

答案 0 :(得分:0)

考虑使用证书和验证?

答案 1 :(得分:0)

如果客户端的会话已获得授权,则只能访问您的API。这几乎是你能做的任何事情。

有一些复杂的方法,比如使用客户端和服务器端加密或者非常基本的东西:在网页中渲染一个秘密,在每次请求时再次验证用户。 您可以检查原始请求来自的标头。等等...

但由于大多数内容在用户浏览器中公开,任何人都可以阅读并在第三方应用中采用它。

因此,请在一段时间内保存自己和真正想要第三方应用的人并提供公共API:)

答案 2 :(得分:0)

最简单的方法是使用您需要的OAuth 2.0(支持身份验证和授权)。

还要确保使用TLS(HTTPS)和以下任何选项

保护数据
1. HTTP Digest
2. OAuthn 2.0
3. Certificates ( Shared secret)

暂时坚持使用HTTPS + Oauth2。

答案 3 :(得分:0)

您可以锁定您的API以接受来自已知IP的请求。此外,根据您的网络基础架构的设计方式,您的Web应用程序可以位于DMZ中,内部网络上的API只能由网络中的服务器访问,其中一个将包含您的后端API(此处提供信息{{3}有一些提示)。为了更好的安全性,除了OAuth2和HTTPS(如上所述)之类的应用程序安全框架实现之外,还需要安全的网络设计。对于API,我发现基于资源的授权比基于角色的授权更有效。最后,随着事情的变化,不断审查您的安全设置至关重要。一个很好的方法是OWASP在https://www.digitalocean.com/community/tutorials/5-common-server-setups-for-your-web-application

描述的威胁建模