首页 > 解决方案 > 防止不安全的重定向

问题描述

我知道:
不验证用户输入的重定向可以使攻击者发起网络钓鱼诈骗、窃取用户凭据并执行其他恶意操作。

像这样 :

res.redirect(req.query.url);

但是这种重定向也是不安全的吗?

res.redirect(req.header('Referer') || '/');

编辑

我的网站是多页的,所以当我想向用户显示错误消息时,我会发送 flash 消息并将其重定向到最后一页:

back(req , res) { 
  req.flash('formData' , req.body);
  return res.redirect(req.header('Referer') || '/'); 
}

因此,如果标头('Referer')不安全,那么安全的方式是什么?

标签: node.jsexpress

解决方案


tl;博士是的!

引荐来源标头与查询字符串一样不安全。没有区别,因为两者都来自用户,因此可以被操纵。这表示您必须验证主机部分。


推荐阅读