0

我正在使用 nodejs,我的网站的一部分将只是简单地提供文件,基本上fs.readFile在包含公共文件的某个目录上使用。例如,当您请求mydomain.com:1234/hello/info.html我的脚本时,将请求文件publicfiles/hello/info.html并将结果发送给客户端。但是,我知道如果进入mydomain.com:1234/../evilurl/userpasswords.txtnodejs 的攻击者会尝试获取 file publicfiles/../evilurl/userpasswords.txt,这实际上与 相同evilurl/userpasswords.txt,所以换句话说,他们可以访问目录外的publicfiles文件并访问“安全”信息。req.url我知道我可以通过简单地确保它不包含来防止这种情况..,但是用户还有其他方式可以访问坏文件吗?他们可以使用某种转义序列而不是..这意味着同样的事情?另外,我不想为此使用快递。如果有专门为此的库,我很好,但我不想要一个像express这样的庞大框架。

4

1 回答 1

1

我也提倡使用现成的包来提供静态内容。我什至会说您应该使用 httpd/ngnix 来提供您的静态内容。

话虽如此,您可以使用path.resolve(). 根据您的基本目录解析请求路径publicfiles/,并确保结果具有您的publicfiles/as 前缀。如果没有,那么这是一个糟糕的请求。

于 2013-10-23T06:35:16.913 回答