2013-12-13 95 views
2

我正在使用checkCookie函數來查看cookie中是否存在用戶名和密碼。我知道使用cookie不是一種安全的方法,但我只是在試用的基礎上使用它,所以請寬大。 第一次執行時,會提示用戶輸入用戶名和密碼,並使用setCookie();將其存儲在document.cookie中,並在重新執行代碼時只會詢問用戶名並檢查cookie以檢索相應的密碼。下面是我的checkCookiefunction JS: -使用Cookie通過Javascript設置用戶名和密碼

function checkCookie() { 
    var username = prompt("Please enter your name:", ""); 
    var password; 
    if (flag == 0) { //flag=0 shows cookie is not set 
    password = prompt("Please enter your password:", ""); 
    username += "!"; 
    username += password; 
    alert("Username = " + username); 
    setCookie("username", username, 365); //save input in cookie 
    } else //if cookie is already set with some username+password 
    { 
    var n = getCookie("username", username); //this retrieves the password from Cookie 
    if (n) { 
     alert("FLAG= 1 The user's password is " + n); 
    } else 
     alert("FLAG= 1 User password doesnot exist ") 
    } 
} //checkCookie function end 

現在我有關於上述代碼的這些問題。我試圖使用一個標誌變量,其值初始爲0,但每當一個用戶名存儲在Cookie中,標誌值應該變爲1.在C中,我們可以通過聲明一個靜態變量標誌來做到這一點,但如何在JS中實現這一點?

2)加上我的完整的Javascript允許我獲取對應於用戶名的密碼,我如何使用它來自動填充密碼字段讓我們說gmail.com網頁密碼字段?
如果我使用getElementByID("password").innerHTML = password,它會自動填充文檔的密碼字段嗎?

3)當我在JSFiddle.net上運行代碼時,會保存用戶名cookie。但是當我刷新JSFiddle.net時,cookie值被重置!如何讓我的cookie值在頁面重新加載時保持不變(固定)?

期待一些很好的建議。感謝您的閱讀

+0

你有什麼樣的後端?讓會話代碼處理密碼更好。 –

+0

您不應該將用戶名和密碼存儲爲cookie,這是不好的做法。相反,您應該創建一個登錄頁面,將會話令牌存儲在數據庫中,並將其設置爲cookie,然後當用戶擁有會話令牌cookie時,您只需將其與數據庫中的令牌表進行比較即可。 –

+0

我正在嘗試將這個JavaScript與我的Firefox擴展一起使用,以便它可以存儲密碼,並且可以在按下Firefox擴展按鈕時自動填充!我的下一個目標是做一個跨瀏覽器的自動填充擴展。 –

回答

4

我會跳過講座,給你你要的:

document.getElementById("password").value = password;

似乎工作(在測試的jsfiddle)

+0

謝謝。你知道如何在JavaScript中使用靜態變量,如我的問題的第一部分所述? –

+0

我認爲你可以像checkCookie.password或checkCookie.flag那樣做 – TecBrat

+0

我注意到在刷新網頁時,我的「用戶名」cookie被刪除。我如何保持其價值? –

5

即使加密或散列,您也不應該將用戶名和密碼存儲爲cookie,這是不好的做法,因爲任何人都可能只是來檢查用戶的網絡流量並竊取他們的身份。存儲用戶名和密碼作爲cookie本質上是將它們廣播給任何可能正在查看的人。

相反,您應該創建一個登錄頁面,將會話標記和用戶的IP存儲在數據庫中,並將其設置爲cookie,然後當用戶擁有會話令牌cookie,您只需將數據庫和用戶的IP地址與數據庫中的令牌表進行比較,以檢查他們是否已登錄。

如果同一個人出現並檢查網絡流量,他們將得到的只是會話令牌。當然,他們可能會用這個來竊取會話,但他們需要相同的IP地址。

這就是爲什麼網站在讓用戶修改賬戶信息時也總是需要重新輸入密碼的原因。

看到這個Wikipedia article on Session Hijacking進一步閱讀。

+0

感謝您的回覆。目前我只是測試如何設置/獲取Cookie,當我計劃讓我的擴展程序商業化時,我會遵循會話令牌方法。 您是否知道如何在JavaScript中使用靜態變量,如我的問題的第一部分所述? –

相關問題