O que e?Qualquer aplicacao web que redireciona para uma URL que e especificado atraves do request, tais como os dados querystring ou de forma potencialmente podem ser alterados para redirecionar os usuarios para um URL maliciosa. Esta violacao e chamado um ataque de redirecionamento aberto (Open Redirection Attacks).Como evitar? Protegendo Aplicacoes ASP.NET MVC 1.0 e MVC 2 Podemos promover tres mudancas em nossos aplicativos existentes em ASP.NET MVC 1.0 e 2, incluindo o IsLocalUrl metodo auxiliar () e alterar o evento LogOn para validar o parametro ReturnUrl.O IsLocalUrl () metodo da classe 3 ASP.NET MVC UrlHelperpublic bool IsLocalUrl(string url) { return System.Web.WebPages.RequestExtensions.IsUrlLocalToHost( RequestContext.HttpContext.Request, url);}IsUrlLocalToHost () metodo da classe requestExtensions System.Web.WebPagespublic static bool IsUrlLocalToHost(this HttpRequestBase request, string url) { if (url.IsEmpty()) { return false; } Uri absoluteUri; if (Uri.TryCreate(url, UriKind.Absolute, out absoluteUri)) { return String.Equals(request.Url.Host, absoluteUri.Host, StringComparison.OrdinalIgnoreCase); } else { bool isLocal = !url.StartsWith("http:", StringComparison.OrdinalIgnoreCase) && !url.StartsWith("https:", StringComparison.OrdinalIgnoreCase) && Uri.IsWellFormedUriString(url, UriKind.Relative); return isLocal; }}Vamos adicionar o IsLocalUrl () para o AccountController, mas voce e encorajado a adicionar em uma classe auxiliar separada, se possivel. Nos vamos fazer duas pequenas alteracoes no ASP.NET MVC versao 3 do IsLocalUrl () para que ele ira trabalhar por dentro da AccountController.IsLocalUrl () metodo, que foi modificado para uso com uma classe Controller MVC//Note: This has been copied from the System.Web.WebPages RequestExtensions classprivate bool IsLocalUrl(string url){ if (string.IsNullOrEmpty(url)) { return false; } Uri absoluteUri; if (Uri.TryCreate(url, UriKind.Absolute, out absoluteUri)) { return String.Equals(this.Request.Url.Host, absoluteUri.Host, StringComparison.OrdinalIgnoreCase); } else { bool isLocal = !url.StartsWith("http:", StringComparison.OrdinalIgnoreCase) && !url.StartsWith("https:", StringComparison.OrdinalIgnoreCase) && Uri.IsWellFormedUriString(url, UriKind.Relative); return isLocal; }}Agora podemos chamar nossa acao LogOn para validar o parametro ReturnUrl, como mostrado no codigo a seguir.Atualizado Metodo de Logon que valida o parametro ReturnUrl[HttpPost] public ActionResult LogOn(LogOnModel model, string returnUrl) { if (ModelState.IsValid) { if (MembershipService.ValidateUser(model.UserName, model.Password)) { FormsService.SignIn(model.UserName, model.RememberMe); if (IsLocalUrl(returnUrl)) { return Redirect(returnUrl); } else { return RedirectToAction("Index", "Home"); } } else { ModelState.AddModelError("", "The user name or password provided is incorrect."); } }}ResumoAtaques de redirecionamento aberto pode ocorrer quando o redirecionamento deURLs sao passados como parametros na URL para um aplicativo. O ASP.NET MVC3 inclui codigo para proteger contra ataques de redirecionamento aberto.Voce pode adicionar esse codigo com algumas modificacoes para aplicacoes ASP.NET MVC 1.0 e 2.0fontes:http://www.asp.net/mvc/tutorials/preventing-open-redirection-attacks A iFactory, Multinacional do Segmento de TI, eleita em 2010 e 2011 como uma das melhores empresas de TI para trabalhar no Brasil, esta contratando para sua sede em Fortaleza.Se voce gosta de trabalhar com desenvolvimento de software, aceita desafios e sabe supera-los, valoriza aprender e compartilhar conhecimento e sabe trabalhar em equipe, venha fazer parte de nosso time!Desenvolvedor .NET Pleno e SeniorPara exercer a funcao de Desenvolvedor .NET, voce necessitara dos seguintes requisitos tecnicos:Dominio em Desenvolvimento de Software para Web na plataforma .NET, utilizando a linguagem C#.NET;Nivel superior completo ou em andamento em informatica ou areas afins.Serao considerados diferenciais:Fluencia na lingua inglesa ou espanhola;Conhecimento em outras linguagens de programacao.Desenvolvedor Java Pleno e SeniorPara exercer a funcao de Desenvolvedor Java, voce necessitara dos seguintes requisitos tecnicos:Dominio em Desenvolvimento de Software para Web na plataforma J2EE;Nivel superior completo ou em andamento em informatica ou areas afins.Serao considerados diferenciais:Fluencia