2014-11-21 62 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