我正在开发一个需要良好安全性的Web应用程序。在当前设计中,许多用户操作需要用户重新发送他们的密码(否则服务器将不得不以明文方式存储它,至少是暂时的)。
许多用户交互是通过AJAX请求进行的。与其让用户为每个请求重新输入密码,我想做这样的事情:
var password_plain = document .getElementById ("password") .value;
ajax ("/login.php", {password: password_plain, username: ...});
// later
ajax ("/api.php", {password: password_plain, action: ...});
假设设计是合理的,例如:
- 服务器不存储或泄漏明文密码
- SSL已正确设置
- 客户端JavaScript定期检查我们是否仍然登录,并在会话过期时设置
password_plain=null
(并清除DOM值) - 服务器本身是安全的
在JavaScript变量中,密码是否安全?