2013-07-19 48 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

希望這有助於

相關問題