2014-03-01 30 views
0

我開始從頭開始實現我的登錄類,並在安全替代asp.net登錄控件的安全檢查

一個很大的問題,這是我的日誌頁面算法:

if(userName and password == true) 
{ 
    creating session from login object 
    encrypt username 
    creating cookie from encrypted username 
    go to private page 
} 

和我的Page_Load()私有頁:

if(session existed) 
{ 
    update cookie timeout 
} 
else 
{ 
    if(cookie existed) 
    { 
     unencrypte value 
     if(username existed from unencrypted cookie value) 
     { 
     create session 
     update cookie timeout 
     }  
    } 
    else 
    { 
    go to logging pgae 
    } 
} 

所以我的問題: 1.does該算法的安全性問題(因爲我覺得每個人都可以節省cookie值和Cr?再見自己,是吧? ) 2.我正在使用cookie,因爲我有會話超時的問題,並希望保持登錄我的用戶超過一天。這是一個好方法嗎? 3.有什麼像Facebook一樣的網站做爲保持登錄他們的用戶? 感謝您的關注

回答

1

1)是的,每個人都可以創建cookie,但不是每個人都可以加密你想設置的值。只有你或者你的代碼可以訪問私鑰才能完成加密。

2)Cookie可以設置爲僅在瀏覽器會話期間可用,直到特定的到期日期,所以是的,這將是一個不錯的選擇。

3)我不知道所有的用戶,但一個cookie是一個不錯的選擇。像live.com和google.com這樣的網站只是創建一個有效期過長的cookie。請記住,您應該提供一種方法讓用戶決定(例如使用複選框)。

也許我錯過了一些上下文,爲什麼發明輪子,而不僅僅是使用ASP.NET窗體身份驗證。這將只是你在算法中描述的內容。

您可以將它與成員資格提供程序框架或新的ASP.NET身份框架結合使用。

+0

非常感謝你,如果有人登錄了很長時間,並且在瀏覽器上保存了加密的cookie,每一個如何使用電腦都可以看到cookie值,然後在其他電腦上可以創建具有相同值的cookie,所以可以看到私人頁面,對嗎? – Mahyar

+0

差不多。我有人可以登錄到同一臺計算機,也是同一個系統帳戶,他或她可以獲得cookie。他們將無法讀取cookie值,因爲它被加密,但可以使用另一臺計算機上的cookie登錄到相同的服務(身份盜用)。 – Martijn