req.referer安全吗?

时间:2017-03-28 14:54:26

标签: node.js http authentication

如果next()是特定值,我有一些只调用req.referer的中间件。

客户端能否以某种方式改变将分配给req.referer的值?

中间件的目标是保护静态资产。静态资产只能由经过身份验证的用户请求,一旦经过身份验证,用户将被重定向,以使req.referer的值“通过”中间件检查。

这样安全吗?如果没有,有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

客户可以非常轻松地改变它。

你永远不要相信Referer标题,就像你永远不要相信客户提供的任何数据一样。

您应该检查Cookie中的标记,或者将某些标记作为路径的一部分或作为查询参数添加到URL中,而不是依赖Referer标头。

例如,对于表单中的每个链接:

http://www.example.com/path/file.pdf
你可以做一个代币:

http://www.example.com/path/file.pdf?token=XXX

其中XXX将是您的服务器签名的内容,可能包括用户,令牌的到期日期,使用范围等。这样您可以获得更精细的控制,而不仅仅是嘲笑用户是否登录。< / p>