2013-07-19 47 views
0

我写的代码,以防止用户身份验证在我的GET方法像下面如何防止用户在MVC Razor注销后按返回按钮时的身份验证?

if (!string.IsNullOrEmpty(Session["UserName"].ToString())) 
      { 
       MyConnection mycon = new MyConnection(); 
       string str = ""; 
       int res = 0; 
       if (Request.QueryString.ToString().Contains("ID1")) 
       { 
        str = "Delete from PostTable where PostID=" + Request.QueryString["ID1"]; 
        res = mycon.IODPost(str); 
       } 
       return View(AllPostList()); 
      } 
      else 
      { 
       return RedirectToAction("Home", "Home"); 
      } 

,但是当我在浏览器中按后退按钮signout后,页面回发到前一页不能完成。那么我应该怎么做才能防止这种情况呢?

+1

您有一个SQL注入漏洞。 – SLaks

+1

不要从GET请求中删除东西。 – SLaks

+0

也不要使用会话进行身份验证(查看会话劫持),并看看使用AuthorizeAttribute或类似的,或者你会有这个地方 – RichardW1001

回答

0

所以在你的例子中有几个不好的做法。

  1. 注意sql注入 - 使用ADO.NET SqlCommand和SqlCommandParameter类来创建查询。

  2. ASP MVC具有像[Authorized],[AllowAnonymous]这样的属性,可以为每个请求引导您的应用程序工作流。您可以在控制器控制杆或方法级别添加这些控制器。

  3. 检查零反对票 “会话[” 用户名 “]。的ToString()”

一些链接:

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.parameters.aspx

http://msdn.microsoft.com/en-us/library/system.web.mvc.authorizeattribute(v=vs.108).aspx#using_authorizeattribute

希望这有助于

相关问题