将用户名和令牌放在 "https" 页面路由中不安全吗?
Is it unsafe putting the username and token in a "https" page route?
我正在寻找处理 SPA 中“更新密码”页面的最佳实践和安全方法。当用户的密码过期时,用户将从“登录”页面重定向到“用户名”和 临时令牌。
到目前为止,我找到了多个选项:
- 将用户名和令牌放入查询字符串中,例如:
/reset-password?username=test&token=jfF5F...
- 将用户名和令牌放入 URL 参数中,例如:
/reset-password/:username/:token
其他不涉及URL的选项:
- 放入 pushState。在我的例子中使用 react-router-dom:
history.push({ state: { username, token } })
- 放入 Cookie 或 LocalStorage
但我的主要问题是将这些数据放入 URL 是否安全?即使在“https”协议中,中间人也可以劫持数据吗?
您通常不会将秘密放入 URL 中。原因是,出于调试原因,允许沿途的每个负载平衡器或代理记录 URLs。我们不希望我们的秘密仅仅因为日志泄露。
此规则有一个例外 - 当秘密是一次性秘密时。当它在使用后立即失效时。这种例外的原因是没有其他方法可以通过例如邮件。
如果正确使用 HTTPS,应该没有人能够劫持数据。 URL 是 HTTP 有效负载的一部分,如果您担心这一点,将对其进行整体加密。
我正在寻找处理 SPA 中“更新密码”页面的最佳实践和安全方法。当用户的密码过期时,用户将从“登录”页面重定向到“用户名”和 临时令牌。 到目前为止,我找到了多个选项:
- 将用户名和令牌放入查询字符串中,例如:
/reset-password?username=test&token=jfF5F...
- 将用户名和令牌放入 URL 参数中,例如:
/reset-password/:username/:token
其他不涉及URL的选项:
- 放入 pushState。在我的例子中使用 react-router-dom:
history.push({ state: { username, token } })
- 放入 Cookie 或 LocalStorage
但我的主要问题是将这些数据放入 URL 是否安全?即使在“https”协议中,中间人也可以劫持数据吗?
您通常不会将秘密放入 URL 中。原因是,出于调试原因,允许沿途的每个负载平衡器或代理记录 URLs。我们不希望我们的秘密仅仅因为日志泄露。
此规则有一个例外 - 当秘密是一次性秘密时。当它在使用后立即失效时。这种例外的原因是没有其他方法可以通过例如邮件。
如果正确使用 HTTPS,应该没有人能够劫持数据。 URL 是 HTTP 有效负载的一部分,如果您担心这一点,将对其进行整体加密。