0

Persona 的快速设置指南说我需要验证来自服务器的断言:

在服务器上验证断言非常重要,而不是在用户浏览器上运行的 JavaScript 中验证,因为这很容易伪造。

虽然我已经实现了,为什么还要在服务器上做呢?无论如何,我需要在这里将断言发送到 Persona 自己的服务器:https://verifier.login.persona.org/verify

如果我直接从浏览器发送断言,我只想知道有哪些安全问题?使用浏览器可以欺骗什么,为什么在我自己的服务器上发送相同的数据时不能欺骗?

谢谢!

4

1 回答 1

2

问题不在于您将断言直接从浏览器发送到验证服务,而在于之后会发生什么。

如果服务器是执行验证的人(通过将其发送到verifier.login.persona.org),那么它知道断言是有效的,因为它检查了自己。恶意用户无法拦截和篡改服务器与验证服务之间的通信。所以服务器可以为用户创建一个会话并设置一个cookie。这都很好。

另一方面,如果客户端进行验证,那么会话是如何创建的?也许客户端代码检查断言是否有效,然后/create_session在服务器上调用?这里的问题是服务器需要相信当客户端请求创建会话时,它实际上已经完成了检查。

运行在用户浏览器中的客户端代码不能被信任,因为它很容易被用户更改(例如使用开发者工具)。因此,当您向我发送正确检查断言的 JavaScript 代码时,我可以修改该检查以跳过断言检查,并在要求创建新会话时对您的服务器撒谎。

于 2013-05-21T05:21:21.883 回答