asp.net mvc - MVC5 Web Application Scaffold - Account/Logoff - Why use HTTP Post? -
i trying head around mvc 5 web application template, , noticed special attention given security around logoff link.
in scaffold template "logoff" link in _loginpartial.cshtml view sits inside html form antiforgerytoken in it, , defined js call form's submit action, so:
@if (request.isauthenticated) {     using (html.beginform("logoff", "account", formmethod.post, new { id = "logoutform", @class = "navbar-right" }))     {     @html.antiforgerytoken()      <ul class="nav navbar-nav navbar-right">         <li>             @html.actionlink("hello " + user.identity.getusername() + "!", "index", "manage", routevalues: null, htmlattributes: new { title = "manage" })         </li>         <li><a href="javascript:document.getelementbyid('logoutform').submit()">log off</a></li>     </ul>     } } with corresponding action method account/logoff inside actioncontroller defined so:
        [httppost]         [validateantiforgerytoken]         public actionresult logoff()         {             authenticationmanager.signout();             return redirecttoaction("index", "home");         } my question - reasoning behind it? why logoff action require security protection? why not have in view,
@html.actionlink("hello " + user.identity.getusername() + "!", "index", "manage", routevalues: null, htmlattributes: new { title = "manage" }) @html.actionlink("log off", "logoff", "account", routevalues: null, htmlattributes: new { title = "logoff" }) and in controller:
 public actionresult logoff()         {             authenticationmanager.signout();             return redirecttoaction("index", "home");         } what security hole create?
thanks.
please refer link: logout: or post?.
it answer question on why post should used in logout.
Comments
Post a Comment