Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Node express公共可访问url安全性_Node.js_Express_Encryption_Base64 - Fatal编程技术网

Node.js Node express公共可访问url安全性

Node.js Node express公共可访问url安全性,node.js,express,encryption,base64,Node.js,Express,Encryption,Base64,大家好 我只想让这个场景在您面前运行,以确保我的方法中没有任何漏洞 我想要达到的目标。 1.使用url+参数向客户端发送邮件,该参数可以在客户端单击url时唯一标识该客户端,并将该参数发送到my express server 2.我的express应用程序接收参数并对其进行解码,以从编码字符串中检索参数,以便我可以查找客户 我的方法 1.发送邮件时,我生成一个base64编码字符串,该字符串使用customer\u id+'~'+customer\u name作为我发送邮件的url参数 我还对字

大家好

我只想让这个场景在您面前运行,以确保我的方法中没有任何漏洞

我想要达到的目标。

1.使用url+参数向客户端发送邮件,该参数可以在客户端单击url时唯一标识该客户端,并将该参数发送到my express server

2.我的express应用程序接收参数并对其进行解码,以从编码字符串中检索参数,以便我可以查找客户

我的方法

1.发送邮件时,我生成一个base64编码字符串,该字符串使用
customer\u id+'~'+customer\u name
作为我发送邮件的url参数

我还对字符串进行url编码

2.当用户单击url且请求到达我的express server时,我解码字符串以检索客户详细信息(
customer\u id
customer\u name
),然后查找客户

我显示的信息是半敏感的,因此我不希望任何人篡改url以查看其他客户端信息

我的方法正确吗


谢谢你们

这不是那么安全。由于您提到要连接客户ID+名称并转换为base64,因此有知识的用户可以简单地对其进行解码,然后尝试“潜在地”访问其他用户的记录

一般的经验法则是,如果客户信息敏感,则不要将其作为链接参数传递。相反,创建一个UUID并存储在客户记录中。我个人甚至在这个UUID上设置了TTL。它更难猜测,也更安全。然后将其作为链接的参数传递,该参数可用于查找和进一步处理


希望这有帮助

这不是那么安全。由于您提到要连接客户ID+名称并转换为base64,因此有知识的用户可以简单地对其进行解码,然后尝试“潜在地”访问其他用户的记录

一般的经验法则是,如果客户信息敏感,则不要将其作为链接参数传递。相反,创建一个UUID并存储在客户记录中。我个人甚至在这个UUID上设置了TTL。它更难猜测,也更安全。然后将其作为链接的参数传递,该参数可用于查找和进一步处理


希望这有帮助

虽然最初的方法不安全,但使用MongoDB的ID也不安全。看

不幸的是,MongoDB ID是可以猜测的,因为它们不是设计用来作为熵源的

但这实际上取决于您使用这些URL保护的内容的价值,以及您为了方便起见愿意在多大程度上牺牲安全性。MongoDB ID肯定比最初的方法更好,并且可能足够安全,让您愿意接受风险


但是,如果我在执行安全审计时在您的应用程序中看到这一点,我会将其标记为一个弱点,并建议您使用加密安全的Psuedo随机数生成器(CSPRNG),如/dev/uradom。

虽然最初的方法不安全,但使用MongoDB的ID也不安全。看

不幸的是,MongoDB ID是可以猜测的,因为它们不是设计用来作为熵源的

但这实际上取决于您使用这些URL保护的内容的价值,以及您为了方便起见愿意在多大程度上牺牲安全性。MongoDB ID肯定比最初的方法更好,并且可能足够安全,让您愿意接受风险


但是,如果我在执行安全审计时在您的应用程序中看到这一点,我会将其标记为一个弱点,并建议您使用加密安全的Psuedo随机数生成器(CSPRNG),如/dev/uradom。

好的,我明白了。我使用mongo db,每个字段都有一个对象id,它由一个4字节的值组成,表示自Unix纪元以来的秒数,一个3字节的机器标识符,一个2字节的进程id和一个3字节的计数器,从一个随机值开始。这应该可以正常工作吗?是的,我也使用mongodb。Mongo的对象ID就是我使用的。好的,很好,我明白了。我使用Mongo db,每个字段都有一个对象ID,由一个4字节的值组成,表示自Unix纪元以来的秒数,一个3字节的机器标识符,一个2字节的进程ID,和一个3字节的计数器,从一个随机值开始。这应该可以正常工作吗?是的,我也使用mongodb。Mongo的对象ID是我使用的。