节点表达 public 可访问 url 安全
Node express public accessible url security
大家好。
我只想运行让你通过这个场景,以确保我的方法没有任何漏洞。
我想达到的目标
1.Send 给客户的邮件带有 url + 参数,当他点击 url 并且参数被发送到我的快递服务器时,可以唯一地识别客户。
2.My express 应用程序接收参数并将其解码以从编码字符串中检索参数,以便我可以查找客户。
我的做法
1.When 发送邮件 我生成一个 base64 编码的字符串,它使用 customer_id + '~' + customer_name
作为我发送邮件的 url 参数。
我也url编码字符串。
2.When 用户单击 url 请求到达我的快递服务器 我解码字符串以检索客户详细信息(customer_id
和 customer_name
)然后查找客户。
我显示的信息是半敏感信息,因此我不希望任何人篡改 url 以查看其他客户信息。
我的方法正确吗?
谢谢大家!
这不是那么安全。由于您提到您正在连接客户 ID + 名称并仅转换为 base64,因此知识渊博的用户可以简单地对其进行解码,然后尝试变体 "potentially" 访问其他用户记录。
根据一般经验,如果客户信息敏感,则不要将其作为 link 参数传递。相反,创建一个 UUID 并存储在客户记录中。我个人甚至在这个 UUID 上设置了 TTL。它更难猜测,也更安全。然后将其作为 link 的参数传递,可用于查找和进一步处理。
希望对您有所帮助!
虽然原来的方法不安全,但使用 MongoDB 的 ID 也不安全。参见 this related question.
不幸的是,MongoDB ID 是可以猜测的,因为它们并非设计为用作熵源。
但这实际上取决于您使用这些 URL 保护的内容的价值,以及您愿意为了方便而牺牲多少安全性。 MongoDB ID 肯定比原来的方法更好,并且可能足够安全,您愿意接受风险。
但如果我在执行安全审核时在您的应用程序中看到这一点,我会将其标记为弱点并建议您使用加密安全伪随机数生成器 ( CSPRNG ),例如 /dev/urandom。
大家好。
我只想运行让你通过这个场景,以确保我的方法没有任何漏洞。
我想达到的目标
1.Send 给客户的邮件带有 url + 参数,当他点击 url 并且参数被发送到我的快递服务器时,可以唯一地识别客户。
2.My express 应用程序接收参数并将其解码以从编码字符串中检索参数,以便我可以查找客户。
我的做法
1.When 发送邮件 我生成一个 base64 编码的字符串,它使用 customer_id + '~' + customer_name
作为我发送邮件的 url 参数。
我也url编码字符串。
2.When 用户单击 url 请求到达我的快递服务器 我解码字符串以检索客户详细信息(customer_id
和 customer_name
)然后查找客户。
我显示的信息是半敏感信息,因此我不希望任何人篡改 url 以查看其他客户信息。
我的方法正确吗?
谢谢大家!
这不是那么安全。由于您提到您正在连接客户 ID + 名称并仅转换为 base64,因此知识渊博的用户可以简单地对其进行解码,然后尝试变体 "potentially" 访问其他用户记录。
根据一般经验,如果客户信息敏感,则不要将其作为 link 参数传递。相反,创建一个 UUID 并存储在客户记录中。我个人甚至在这个 UUID 上设置了 TTL。它更难猜测,也更安全。然后将其作为 link 的参数传递,可用于查找和进一步处理。
希望对您有所帮助!
虽然原来的方法不安全,但使用 MongoDB 的 ID 也不安全。参见 this related question.
不幸的是,MongoDB ID 是可以猜测的,因为它们并非设计为用作熵源。
但这实际上取决于您使用这些 URL 保护的内容的价值,以及您愿意为了方便而牺牲多少安全性。 MongoDB ID 肯定比原来的方法更好,并且可能足够安全,您愿意接受风险。
但如果我在执行安全审核时在您的应用程序中看到这一点,我会将其标记为弱点并建议您使用加密安全伪随机数生成器 ( CSPRNG ),例如 /dev/urandom。