确保安全的url nodejs

时间:2013-10-23 00:11:28

标签: node.js security url path relative-path

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

1 个答案:

答案 0 :(得分:1)

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

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