【问题标题】:How to hash or encrypt user IDs in URL如何散列或加密 URL 中的用户 ID
【发布时间】:2016-11-01 14:30:47
【问题描述】:

我正在开发一个应用程序,有时我需要加密我在 URL 中发送的用户凭据,因为它现在只是一个纯文本,根本不安全。

我需要加密的代码示例如下:

<a type="button" href="http://<%= host %>/play?user=<%= users.id %>" class="btn btn-primary">Create new scene</a>

我发现encodeURIComponent(str); 函数和sessions 会是另一种可能性吗?但我不确定如何在我的代码中实现这一点。提前致谢。

【问题讨论】:

  • 您打算如何解密此信息?如果您要在客户端执行此操作,那么首先加密此信息可能没有多大意义,因为客户端始终可以访问它。如果您在服务器中解密,那么为什么需要包含所有这些额外的标记?你不能只加密users.idhost吗?

标签: html http url encryption


【解决方案1】:

基本上,你应该做两个步骤:

  1. 您应该使用服务器生成的令牌,而不是凭据,使用 秘密,例如&lt;userId, timestamp, hmac(userId + timestamp + secret)&gt; 响应用户的身份验证(例如 OAuth、HTTP Basic 或自定义 API)。这允许在不发送攻击者可以读取的密码的情况下进行授权。该方案的可靠实现是JSON Web Tokens,可用于多种编程语言。
  2. 如果您在 URL 中使用令牌,请注意如果用户复制和共享链接,访问权限将被委派。因此使用时间戳的过期时间不应该太高。为了规避这个问题,您也可以使用 cookie 来代替。在这种情况下,您的服务器会回复 set-cookie: token,浏览器会自动将每个请求中的 cookie 附加到同一个域。

一定要使用 SSL,这样中间人就无法嗅探凭据或令牌。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-17
    • 1970-01-01
    • 2021-12-16
    • 1970-01-01
    • 1970-01-01
    • 2017-05-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多