gpt4 book ai didi

php - php中基于 token 的身份验证

转载 作者:可可西里 更新时间:2023-10-31 22:11:46 24 4
gpt4 key购买 nike

我的网络服务器上有一个用 php 编写的 REST 服务。我想知道什么是最好的身份验证(除了基本的 http 访问身份验证)。听说过token-based auth,想请问有没有人能解释一下主要步骤。

  • 在 GET 上: token 发送是否可见? (那不是不安全吗?)
  • 如何使 token 仅在特定时间有效?
  • ...

客户端:安卓/浏览器;服务器:Apache,PHP5

最佳答案

这两种方式都可以,GET 请求中的值实际上并不比 POST 请求中的值更可见。如果任何人可以“看到”(即拦截)请求,他就可以看到您发送的所有内容。最后,一个 HTTP 请求只是一堆 HTTP header ,后面可能跟着一个正文。 URL 在第一个 GET/foo/bar HTTP/1.1 行中发送,其他值只是在不同的后续行中发送。

因此,您希望将身份验证 token 发送到哪里取决于您。您可以要求它是附加到每个请求的查询参数:

GET /foo/bar?user=123456&token=abcde...

要真正按预期使用 HTTP 协议(protocol),您应该使用 Authorization HTTP header :

Authorization: MyScheme 123456:abcde...

此 header 的内容完全由您决定。它通常指定一种授权方法,如 Basic,然后是您想要进行身份验证的任何内容。这可以只是用户名和密码、它们的哈希值、客户端在某个时候获得的不透明 token 或其他任何东西。

我建议使用 token 系统或请求签名系统,后者是首选。在请求签名系统中,客户端必须从您那里获取 token 。然后它发送此 token 的哈希值和请求的某些特征以验证请求,例如sha1( token + 时间戳 + 请求 URL + 请求正文)。您的服务器可以验证这一点,而无需客户端在每个请求中以纯文本形式发送 token 。

How do I make the token only valid for a specific time?

您在服务器端保存带有过期时间戳的 token 并对其进行检查。

关于php - php中基于 token 的身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9510703/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com