我正在使用checkCookie函数来查看cookie中是否存在用户名和密码。我知道使用cookie不是一种安全的方法,但我只是试用它,所以请宽容。
在第一次执行时,它将提示用户输入其用户名和密码,并使用setCookie();
将其存储在document.cookie中,并且在重新执行代码时,它只会询问用户名并检查cookie以检索相应的密码。下面是我的checkCookiefunction JS: -
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
现在我对上述代码有这些疑问。
1)我试图使用一个标志变量,其值初始为0,但每当用户名存储在Cookie中时,标志值应该变为1.在C中,我们可以通过声明一个静态变量标志来做到这一点,但是如何在JS中实现这一点?
2)另外我的完整Javascript允许我获取与用户名对应的密码,如何使用它来自动填写密码字段,请说gmail.com网页密码字段?
如果我使用getElementByID("password").innerHTML = password
,它会自动填写文档的密码字段吗?
3)当我在JSFiddle.net上运行代码时,会保存用户名cookie。但是当我刷新JSFiddle.net时,cookie值被重置!如何在页面重新加载时使我的cookie值持久(固定)?
期待一些好的建议。感谢您的阅读
答案 0 :(得分:5)
你永远不应该将用户名和密码存储为cookie,即使它们是加密或散列的,这也是不好的做法,因为任何人都可以来检查用户的网络流量并窃取他们的身份。将用户名和密码存储为cookie实质上是将它们广播给可能正在查看的任何人。
相反,您应该创建一个登录页面,在数据库中存储会话令牌和用户的IP,并将其设置为cookie,然后当用户拥有会话令牌cookie时,您需要做的就是比较它和用户的IP使用数据库中的标记表进行寻址,以检查它们是否已登录。
如果同一个人出现并检查网络流量,他们将获得的只是会话令牌。当然,他们可能会使用它来窃取会话,但他们需要相同的IP地址。
这就是为什么网站在让用户修改帐户信息时也应该始终要求重新输入密码。
有关详细信息,请参阅此Wikipedia article on Session Hijacking。
答案 1 :(得分:4)
我会跳过讲座并告诉你你的要求:
document.getElementById("password").value = password;
似乎有效(在jsfiddle中测试)