2014-11-21 40 views
0

有谁能告诉我如何验证此URL中的此行吗?URL重定向不可信站点

return Redirect(returnUrl); 

由于这是给我从安全扫描工具

+0

你想在你的网站的某个地方重定向....... returnans会将本地? – 2014-11-21 09:39:12

回答

2

您只需要测试该URL是本地URL为正确的网址进行重定向前的安全错误“URL重定向不受信任的网站”可能会将用户重定向到其他网站(如钓鱼网站)。当你的代码目前维持,这个网址:一旦你登录

通过下面添加此条件检查

http://www.yoursite.com/account/login?returnUrl=www.myfakesite.com 

将您重定向到www.myfakesite.com,你能保证你永远不重定向当前的应用程序之外

if(!string.IsNullOrEmpty(returnUrl) && Url.IsLocalUrl(returnUrl)){ 
    //check for empty return url and that it is a local url 
    return Redirect(returnUrl); 
} 
else{ 
    //wherever you want people to default going to if they 
    //log in without a return url or one that is not a local url. 
    return RedirectToAction("action", "controller"); 
} 

EDIT

的URL辅助组件位于的System.Web。 MVC。但是,在一个控制器中,UrlHelper已经安装并准备就绪 - 意味着控制器会自动“实例化UrlHelper”。为了在控制器外部使用此设备,您需要访问当前的RequestContext以设置UrlHelper。

var helper = new UrlHelper(HttpContext.Current.Request.RequestContext); 
    return helper.IsLocalUrl("testUrl"); 

注意 - 我不知道的安全扫描软件是如何确定,这可能是一个“URL重定向信任的网站” - 但它可能只是发出一个糟糕的网址,看是否应用程序重定向到它。这应该纠正,但没有关于安全扫描如何工作的更多信息,我不能保证。

+0

我无法将Url.IsLocalUrl(returnUrl)添加到我的代码中。所需的namesapce是“System.web.mvc”对吗? – 2014-11-24 12:01:04

+0

@AnkitBansal - UrlHelper在System.Web.Mvc中,但是,在控制器之外,您需要实例化UrlHelper。请参阅以上关于如何做到这一点的编辑。 – Tommy 2014-11-24 14:55:55

+0

在我的控制器中添加以下行给出以下错误'System.Web.HttpContextBase'不包含'Current'的定义,并且没有接受'System.Web.HttpContextBase'类型的第一个参数的扩展方法'Current'可能是发现(你是否缺少using指令或程序集引用?System.Web.mvc已被添加为引用。 – 2014-12-04 14:09:05