node.js - 防止不安全的重定向
问题描述
我知道:
不验证用户输入的重定向可以使攻击者发起网络钓鱼诈骗、窃取用户凭据并执行其他恶意操作。
像这样 :
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')不安全,那么安全的方式是什么?
解决方案
tl;博士是的!
引荐来源标头与查询字符串一样不安全。没有区别,因为两者都来自用户,因此可以被操纵。这表示您必须验证主机部分。
推荐阅读
- python-3.x - 未找到 Python 但可以安装
- matlab - 如何提取信号的单个波分量信息?
- scala - 为什么使用多个参数列表定义折叠?
- c# - Json.net:不要将数字反序列化为布尔值
- elasticsearch - 在 Elasticsearch 中组合范围和匹配
- cloud-foundry - Cloud Foundry:如何重新映射 Docker 映像中的暴露端口?
- javascript - 使用角度 8 更改类型和值输入
- ssh - 在 GitHub Actions 上通过 SSH 自连接
- python - python - 遍历列表以格式化
- python - 使用 Tesseract 识别页面上的单个字符