【问题标题】:PHP: Authenticating my REST applicationPHP:验证我的 REST 应用程序
【发布时间】:2011-07-12 21:21:14
【问题描述】:

我一直在寻找使我的 REST 应用程序更安全的方法。 HTTP 基本身份验证似乎是一种方式,但需要在每次请求时在客户端和服务器之间传送用户名+密码。如果我使用curl,但使用 Javascript 文件,可以正常工作吗?不太酷。

我最近发现并阅读了有关 Digest HTTP 身份验证的信息,这似乎比 HTTP Basic 提供的安全性有了很大进步,尽管理解起来要复杂得多,但我仍然没有完全诚实。

我查看了this question,它是了解使用 Digest 方法的利弊的答案,但似乎我想得越多,一切就变得越混乱。

似乎已经有很多可用的解决方案来解决这个问题,但其中大多数现在已经接近 10 年了。

Digest 方法是否是一种恐龙,最好将其留在黑暗中,以寻求另一种更新的保护请求的方法,或者是否有任何现有的优秀 Digest 库可用?

【问题讨论】:

    标签: php authentication digest-authentication


    【解决方案1】:

    您是否考虑过使用 HTTPS?您真正需要的只是域的签名安全证书,并检查您的代码以确保它以这种方式连接。它将以这种方式使用 SSL,服务器和浏览器将自动负责加密来回发送的数据,并将使用三次握手进行所有通信。

    【讨论】:

      【解决方案2】:

      您可以查看 Facebook 和 Twitter 等流行 API 使用的不同身份验证技术,它们使用 OAuth 方法进行身份验证。

      Google Maps (v2) 和 Bitly 等其他 API 允许您使用 URL 中的 API 密钥访问他们的 API。所以每个用户都有一个 API 密钥可以在请求中使用,例如 http://api.domain.com/get?key=supersecureapikey

      这两种方法都非常出色,并且在整个网络中被广泛使用,只有直接从 javascript 访问 API 会暴露 API 密钥/密码。解决此问题的一种选择(我使用的选项)是让 javascript 调用服务器上的文件,该文件在服务器端执行 API 调用,从而保持密钥/密码 [更多] 安全。

      【讨论】:

      • @pthurmond 我无法评论您的回答,但 SSL 不是一种身份验证方法。它只是对两台服务器之间的数据传输进行加密。这仍然会使 API 向公众开放,并且不会解决任何问题。如果您正在传输敏感数据(您可能应该为此查看 SOAP)或来自安全页面的请求(因此浏览器不会对非安全数据大惊小怪),您应该只将 SSL 用于 rest API 跨度>
      • 好的,重点。您仍然需要登录/身份验证系统。也就是说,如果他们使用某种框架,这至少可以部分解决。我想我的重点更多是在安全方面。并且看到他已经拥有一个 HTTP 身份验证系统(除非我误解了他),他所要做的就是增加安全性,就是使用证书和一些快速的 url 检查将其更改为安全的 http 系统 (https)。
      • @adlawson:感谢您的回复。你介意展示一些关于你的解决方案是如何设计的伪代码吗?
      猜你喜欢
      • 1970-01-01
      • 2013-08-21
      • 2018-09-18
      • 1970-01-01
      • 1970-01-01
      • 2014-02-25
      • 1970-01-01
      • 2017-09-04
      • 2014-04-23
      相关资源
      最近更新 更多