2010-08-20 1 views
1

J'utilise ASP.NET MVC2 et j'ai un problème. Après la déconnexion, je tape manuellement dans la barre d'adresse http://localhost/controller/action et je suis redirigé vers la page indépendamment de ce que je suis LogOff. Comment puis-je résoudre ce risque de sécurité?Problème de sécurité lors de la déconnexion et de la navigation dans '/ controller/action'

code d'une action du contrôleur qui je suis type manuel sur la barre adresse:

[Authorize(Roles = "Admin")] 
public ActionResult Upload() 
{  
    return View(); 
} 

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %> 

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server"> 

Ajouter

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> 
    <h2>Upload</h2> 
    <% using (Html.BeginForm("Upload", "Upload", FormMethod.Post, new { enctype="multipart/form-data" })) 
    { %> 
      Select a file: <input type="file" name="fileUpload" id="fileUpload" /> 
      <input type="submit" value="Upload";/> 
     <% 
    } %> 
</asp:Content> 

Mise à jour: Maintenant, je l'ai découvert que je peux manualy le type dans le contrôleur de barre d'adresse et nom de l'action et les pages ouvertes sur mon site Web avant la connexion, pourquoi

actions LogOn et LogOff:

[AcceptVerbs(HttpVerbs.Post)] 
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1054:UriParametersShouldNotBeStrings", 
     Justification = "Needs to take same parameter type as Controller.Redirect()")] 
    public ActionResult LogOn(string userName, string password, bool rememberMe, string returnUrl) 
    { 

     if (!ValidateLogOn(userName, password)) 
     { 
      return View(); 
     } 

     FormsAuth.SignIn(userName, rememberMe); 
     if (!String.IsNullOrEmpty(returnUrl)) 
     { 
      return Redirect(returnUrl); 
     } 
     else 
     { 
      return RedirectToAction("About", "Home"); 
     } 
    } 

    public ActionResult LogOff() 
    { 

     FormsAuth.SignOut(); 

     return RedirectToAction("Index", "Home"); 
    } 

Je suis solutions trouvées: Je mets le nom du mauvais rôle ([Authorize(Roles = "Admin")]) et ce fut un problème avec mon code

+2

Montrez votre code d'action. –

Répondre

1

Etes-vous sûr que le contrôleur et/ou l'action que vous saisissez dans la barre d'adresse a l'attribut [Authorize] qui lui est associé?

+0

J'ai posté un code d'action, voir ci-dessus – Ognjen

+0

Et dans ce code, vous n'avez pas l'attribut authorize défini. Par conséquent, vous dites que ce contrôleur/action particulier peut être consulté par n'importe qui. – Tommy

+0

J'ai mis l'attribut authorize mais le problème est toujours là, voir le code ci-dessus – Ognjen

0

Je pense: la page vient du cache du navigateur, lorsque vous appuyez sur un bouton soumettre une page vous serez redirigé vers la page de connexion

Questions connexes