1

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

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

4

4 回答 4

0

如果客户端的会话被授权,您的 API 应该是可访问的。这几乎是你能做的任何事情。

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

但由于其中大部分内容在用户浏览器中是公开的,因此任何人都可以阅读并在第三方应用程序中采用它。

所以拯救你自己和那些真正想做第三方应用程序并提供公共 API 的人 :)

于 2013-01-29T11:46:36.727 回答
0

考虑使用证书和验证?

于 2013-01-29T11:42:36.060 回答
0

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

于 2017-04-07T16:12:04.610 回答
0

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

还要确保您使用 TLS (HTTPS) 和以下任何选项来保护在线数据

1. HTTP Digest
2. OAuthn 2.0
3. Certificates ( Shared secret)

现在坚持使用 HTTPS+Oauth2。

于 2017-03-31T15:45:58.600 回答