gpt4 book ai didi

security - 请求完成时如何验证我的 openid.op_endpoint

转载 作者:行者123 更新时间:2023-12-03 06:31:47 25 4
gpt4 key购买 nike

我的网站上有一个基于 Open ID 的身份验证系统。

有时,用户会在 foo@gmail.com 下注册帐户,并且他们会尝试使用 Google Open ID 提供商https://www.google.com/accounts/登录o8/id,在本例中我想自动关联帐户并登录。

该过程完成后,我从某个地方收到一个有效负载,声称 openid.op_endpoint=https://www.google.com/accounts/o8/id

我的问题:

  • 我可以相信 openid.op_endpoint 是正确的吗?这会被恶意 openid 提供商以某种方式欺骗吗?

为了说明这一点,假设有人输入 http://evil.org 作为他们的 openid 提供者,我能否以某种方式最终收到一个声明 openid.op_endpoint 的请求> 是谷歌吗?我是否需要针对随机数存储额外的信息来进行验证?

规范为kind of tricky了解一下

最佳答案

是和否。不,您不应该信任通过网络获取的任何内容,包括 openid.op_endpoint。但如果您使用安全的 OpenID 库,则在允许用户登录您的站点之前会验证此参数。事实上,OpenID 规范必须提供一种方法来验证此参数和其他参数,如果没有验证,身份验证协议(protocol)就等于无用。

所以,请确保您的库是不错的。那么是的,信任 openid.op_endpoint 参数。但不是您自己从查询字符串中获得的参数,因为 OpenID 消息可以 POST 给您,并且该参数不会显示在查询字符串中。更糟糕的是,如果您在这种情况下检查查询字符串,您可能会遇到安全漏洞,攻击者可以将该参数添加到查询字符串中并在遵守库要求的同时欺骗您。因此最好使用库公开的 API 来找出 OP 端点是什么。

就以这种方式链接帐户而言,这是一个很好的方法,因为 Google 只会发送它知道真正由用户控制的电子邮件地址。如果您已要求用户完成电子邮件验证步骤,则链接帐户是安全的。但是,如果您拥有的用户电子邮件地址从未经过验证,那么您不得根据此匹配链接帐户,否则我可以通过创建具有其他人电子邮件地址的帐户来劫持其他人的帐户,然后等待他们使用 OpenID 登录,现在我可以进入他们的帐户。

关于security - 请求完成时如何验证我的 openid.op_endpoint,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2414023/

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