javascript - 网站看似让用户登录,但没有向服务器发送密码;这是如何运作的?

标签 javascript security

在 stellar 网站常见问题解答 ( https://www.stellar.org/faq/#_Why_does_my_client_log_me_out_on_refresh_ ) 上,它说了以下内容

Your password never gets sent to our server: instead, it’s used in your current browser window to decrypt your secret key. That way we never have access to your stellars. We chose not to store this password locally, so that it doesn’t get written to your local disk (we may add the ability to cache the password locally, depending on user demand).

这究竟是如何(或可能)起作用的?通常的工作流程是将密码发送到服务器,然后服务器对其进行哈希处理并将其与存储在用户数据库中的哈希值进行比较。我无法通过仅在客户端执行此操作(安全地)看到这种工作方式...

最佳答案

我来试一试,注册过程中的工作流程是这样的:

  • 我输入我的密码并提交表格。
  • 这会向服务器发送请求以获取 KEY。
  • KEY 返回并在客户端用密码加密。
  • 加密的 KEY 被发送到服务器。
  • 加密 key 存储在数据库中。

登录期间:

  • 我输入我的凭据并提交表格。
  • 这会向服务器发送请求以获取我的 KEY。
  • KEY 返回并在客户端用密码解密。
  • 大概此时某种“授权”消息或信号以某种方式被发送回服务器,或者甚至可能是未加密的 key ?

您问这是否安全,但事实并非如此。他们(在他们的常见问题解答中)特别说明了为什么他们不能帮助您找回密码,它确实保护了您的密码,但不保护您的帐户。

任何有权访问数据包嗅探器的人都可以获得加密 key ,并根据加密级别可能将其打开。我敢肯定,伪造加密数据返回服务器以验证登录是一个笑话,因为所有加密和解密代码都已传递给客户端以在注册或登录期间执行。

但至少这是可以想象的。

浏览器始终掌握在敌人手中!

关于javascript - 网站看似让用户登录,但没有向服务器发送密码;这是如何运作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26717722/

相关文章:

javascript - 最接近的 Jquery 顶级

javascript - 点击事件后 Canvas 消失

javascript - 如何从另一个站点安全地将表单发布到 django 站点

security - Spring Security插件不引发事件

php - 一种向 javascript 调用的 web 服务添加访问控制的方法?

security - 服务器之间使用http协议(protocol)

java - servlet 上下文中的 WebSphere 管理角色检查

javascript - 如何使 $ ('#some-id' ) 返回与 getElementById ('some-id' 相同的对象)

javascript - 使用双显示器时如何自动调整 div 的高度?

security - 使用 Jmeter 记录 Gmail