如何安全地重定向到引荐来源页面?

时间:2014-06-13 06:38:11

标签: c# asp.net asp.net-mvc http redirect

我使用以下代码重定向到我的控制器中的referrer:

return Redirect(this.HttpContext.Request.UrlReferrer.AbsolutePath);

在使用应用程序安全工具进行扫描期间,它指出上述代码可以进行网络钓鱼攻击。

  

Web应用程序接受用户控制的输入,该输入指定指向外部站点的链接,并使用该链接生成重定向。这可以实现网络钓鱼攻击。

有没有办法安全地重定向到推荐人?

2 个答案:

答案 0 :(得分:2)

这听起来像是一个通用错误,在你的情况下可能是无害的。 app sec工具没有意识到你将人们送回他们来自的确切页面,而是看到了你做以下事情的可能性:

return Redirect(
    is_trusted_site( this.HttpContext.Request.UrlReferrer.AbsolutePath )
    ? sensitiveURL
    : otherURL
);

如果重定向的网址因UrlReferrer的内容而发生变化,那么您可能会成为referrer spoofing的牺牲品。

同样,如果您想修复"错误",您也许可以使用JavaScript history.back()

答案 1 :(得分:1)

我没有发现任何问题,因为您真正想要的是重定向到在整个互联网上为您的网站添加链接的人。你无法控制"引用者"最终在HTTP标头中。它可能是合法的,也可能是伪造的。如果你没问题,我认为没有问题。

请注意,有人可以使用您的网站重定向到任何内容,这可能会导致可能的攻击。即,发送一个实际链接到您网站的电子邮件,但在查询参数中指定一个网上诱骗网站。

你打算用它做什么?