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