gpt4 book ai didi

php - 与 API 共享 Cookie 以验证用户身份的最佳方式

转载 作者:行者123 更新时间:2023-11-29 19:57:49 25 4
gpt4 key购买 nike

我已经编辑了我的问题并使其变得简单,因为我认为它很模糊。所以我已经让它变得简单了。我想使用存储在浏览器中的 cookie 使用 API 对用户进行身份验证。当然,cookie 会在每次登录时随机更改。

信息知识:在后台使用自定义API和php

Javascript 和 Tempojs 作为模板引擎前端。

编辑:

我的算法是这样的:数据库只有一个字段会在每次登录时发生变化,即登录尝试,每次都会递增。

当用户使用 php 登录时。 session 和 cookie 生成,一个用于连接到 api 的 cookie 将是

hash of (username + login attempt+ salt)= xxxxxxxyyyyyyxxxxxx

现在 Api 知道 cookie 值应该是多少,所以它验证用户是否正确并响应数据。现在每当用户注销 cookie 过期并且 api 无法再进行身份验证。我将使用什么来获取用户数据我将发布

Cookie 通过 xmlhttprequest 到位于不同子域的 api 服务器,并将数据加载到 web 应用程序中。

如果有人认为此方法易受攻击或不安全,这就是我的计划。让我知道。是的,对于跨域请求,我将使用

标题(“访问控制允许来源:*”)或者header("Access-Control-Allow-Origin: 'www.website.com'")

但如果您确实有替代方法。请说明我可以使用 jsonp 但我不想,而且我可能还必须上传文件数据。

最佳答案

您提出的解决方案听起来不错。但是,您应该确保以下几点:

  • 确保散列中的盐足够长(为了安全起见,我只使用 32 个字符,尽管这有点多)。
  • 确保盐确实是散列函数中的最后一个组件。如果不是,攻击者可能会在某些情况下创建自己的 cookie ( here's how )。
  • 在进行散列时使用定界符。例如,如果有一个用户 foo 并且有另一个用户 foo1,如果您不使用定界符就会发生这种情况:当 foo 记录第11次登录时,他的cookie是hash("foo11"+salt)foo1第一次登录时,他的cookie是hash( "foo11"+salt),也是。那会很糟糕,所以改为执行类似 hash(user+"|"+login_attempt+"|"+salt) 的操作。
  • 我认为您的 API 服务器还必须发送 Access-Control-Allow-Credentials: true header 。

哦,还要记住,当用户从计算机 A 登录然后从计算机 B 登录时,他在计算机 A 的 session 将不再有效。

关于php - 与 API 共享 Cookie 以验证用户身份的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15668225/

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