使用Cookie通过Javascript设置用户名和密码

Saa*_*war 3 javascript cookies autofill

我正在使用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
Run Code Online (Sandbox Code Playgroud)

现在我有关于上述代码的这些问题.

1)我试图使用一个标志变量,其值初始为0,但每当用户名存储在Cookie中时,标志值应该变为1.在C中,我们可以通过声明一个静态变量标志来做到这一点,但是如何实现这在JS?

2)另外我的完整Javascript允许我获取与用户名对应的密码,如何使用它来自动填写密码字段让我们说gmail.com网页密码字段?
如果我使用getElementByID("password").innerHTML = password,它会自动填写文档的密码字段吗?

3)当我在JSFiddle.net上运行代码时,会保存用户名cookie.但是当我刷新JSFiddle.net时,cookie值被重置!如何在页面重新加载时使我的cookie值持久(固定)?

期待一些好的建议.谢谢阅读

Jam*_*lly 6

你永远不应该将用户名和密码存储为cookie,即使它们是加密或散列的,这也是不好的做法,因为任何人都可以来检查用户的网络流量并窃取他们的身份.将用户名和密码存储为cookie实际上是将它们广播给可能正在查找的任何人.

相反,你应该创建一个登录页面,它在你的数据库中存储会话令牌和用户的IP,并将其设置为cookie,然后当用户拥有你的会话令牌cookie时,你需要做的就是将它与用户的IP地址进行比较数据库中的标记表,用于检查它们是否已登录.

如果同一个人出现并检查网络流量,他们将获得的只是会话令牌.当然,他们可能会使用它来窃取会话,但他们需要相同的IP地址.

这就是为什么网站在让用户修改帐户信息时也应始终要求重新输入密码的原因.

有关进一步阅读,请参阅此Wikipedia关于会话劫持的文章.