我正在连接到具有基本身份验证的服务器,并在页面的不同部分执行多个ajax。在ajaxSetup中设置密码是否安全:
$.ajaxSetup({
username: _username,
password: _password,
timeout: this.dmDuration,
headers: {
"Authorization": 'Basic ' + btoa(_username + ':' + _password) }
});
答案 0 :(得分:1)
放置密码客户端绝对不安全。
可以像读取请求数据包一样以简单文本截取甚至读取。不是一个聪明的主意。您应该存储密码服务器端。
即使请求是第三方产品,密码也应该在服务器端代码中保护,并且对第三方的请求应该通过服务器端的安全连接。这样,只有编写代码的开发人员才知道密码,最终用户或黑客永远无法看到并可能分发密码。
如果您要写第三方,请编写ajax设置以向服务器端功能发送请求。然后,包含密码的服务器端功能将向服务器发送安全请求,而不会看到密码。
如果要在本地进行ajax调用,可能是为了授权该呼叫。您应首先对用户服务器端进行身份验证,并在成功时为用户开发安全会话以及加密唯一的反CSRF令牌。从那时起,每次调用都应该来自经过身份验证的用户,但必须在任何ajax调用上传递CSRF令牌,以确保调用事实上已由用户提交,而不是来自潜在的CSRF攻击。
答案 1 :(得分:0)
大多数服务端平台将允许您定义会话(通常会向客户端提供会话令牌并使用cookie传回)。打开会话后,您将无法获得下次通话的密码。
即。在.net中,您可以使用WCF session感知服务。