BodyScrapter“OpenId提供者”攻击问题

BodyScrapter“OpenId提供者”攻击问题,openid,openid-provider,google-openid,Openid,Openid Provider,Google Openid,好的,基本上这是BodyRacker OpenId提供程序攻击场景 Bob在谷歌上声称的标识符如下:, ttps://www.google.com/accounts/o8/id?id=AAtawkQvytyBNNuHpRhn36f8MLvFiJvZg8teNE Jane知道如何找到Bob当前声称的标识符 她在这里创建了自己的OpenId提供者,www.jane.com/accounts/o8/id,这样当被询问时,它将返回Bob声称的标识符 她去了一个编码错误的网站www.bcs.com,该网站

好的,基本上这是BodyRacker OpenId提供程序攻击场景

Bob在谷歌上声称的标识符如下:, ttps://www.google.com/accounts/o8/id?id=AAtawkQvytyBNNuHpRhn36f8MLvFiJvZg8teNE

Jane知道如何找到Bob当前声称的标识符

她在这里创建了自己的OpenId提供者,www.jane.com/accounts/o8/id,这样当被询问时,它将返回Bob声称的标识符

她去了一个编码错误的网站www.bcs.com,该网站使用开放id,鲍勃在

她告诉www.bcs.com使用OpenId提供商www.jane.com/accounts/o8/id

现在这是我不知道的部分,我想知道它是否可能/现实。。。www.jane.com/id一些如何让www.bcs.com相信声明的标识符字符串,即网站最终将看到的值是ttps://www.google.com/accounts/o8/id?id=AAtawkQvytyBNNuHpRhn36f8MLvFiJvZg8teNE.

即使主持人是www.jane.com,有可能吗

我们正在努力实现OpenId,我们不想成为那个编码糟糕的站点。我们正在使用一些第三方.NET库,它给我们声明的标识符,所以我们不确定它在哪里或如何构建它。如果它可能是伪造的,那么我们正在考虑进行一些检查,以确保提供者OpenId的url与声明的标识符中的url匹配


这也引起了人们的担忧,即我们是否应该采取额外的步骤,对我们声称的标识符进行散列/置乱。我们这样认为,因为谷歌根据请求OpenId的站点更改其标识符。我的意思是,如果不尝试并保护其成员,为什么它会这么做呢?

你本质上是在问,是否有可能编写一个违反规范的OpenID使用者实现,从而引入安全漏洞。是的。你可以省略整个验证过程,相信用户告诉你的一切

但是对于一个严格遵循OpenID规范的消费者来说,这样的攻击是不可能的

既然您说您使用的是.NET库,那么您可能使用的是DotNetOpenAuth。它与stackoverflow使用的是同一个库,在使用它时,您可能不必担心任何漏洞。如果您正在使用另一个库,那么切换到DotNetOpenAuth可能是最佳选择


至于谷歌返回基于领域的标识符的原因:这样做是为了保护用户的隐私,而不是增加安全性。基本上,这可以确保您无法将用户的帐户链接到他的Google帐户。

好的,这很好,因为我们使用的是DotNetOpenAuth。因此,请返回哈希问题。我们能安全地假设我们收到的OpenID不必像某种密码一样对待吗?我的意思是,我们并不是说要对它公开,只是如果我们把它当作安全的数据来处理,就需要付出额外的努力。还有,我明白你对谷歌的意思。这肯定会阻止跨站点跟踪,因为StackOverFlow已经发现了这一点!我看到你对别人问题的回答就是这样。