Javascript 可能的不安全登录
在我的公寓里,我连接到一个由大楼管理的私人WiFi网络。为了连接到internet,我需要通过intranet服务器提供的网页登录 出于对我的浏览器没有要求我保存用户名和密码的兴趣,我决定查看源代码,看看它是如何完成的。在这样做的时候,我遇到了一些奇怪的JS代码,它用看起来像盐的东西编译密码,然后将其转换为Javascript 可能的不安全登录,javascript,security,passwords,plaintext,Javascript,Security,Passwords,Plaintext,在我的公寓里,我连接到一个由大楼管理的私人WiFi网络。为了连接到internet,我需要通过intranet服务器提供的网页登录 出于对我的浏览器没有要求我保存用户名和密码的兴趣,我决定查看源代码,看看它是如何完成的。在这样做的时候,我遇到了一些奇怪的JS代码,它用看起来像盐的东西编译密码,然后将其转换为hexMD5: password = hexMD5( '\360' + document.login.password.value + '\123\076\310\2
hexMD5
:
password = hexMD5(
'\360' +
document.login.password.value +
'\123\076\310\204\336\276\065\360\375\311\365\076\031\311\360\117'
)
如果密码像那样被加密和散列,那么肯定需要在服务器上执行同样的操作,这意味着我的密码是以纯文本形式保存的?这可能是我的错,但我看不出有其他办法
如果您能深入了解这一点,我将不胜感激,请告诉我这个问题是否适用于其他SE站点。我假设hexMD5()是一个将任何字符串转换为MD5哈希的实现。如果这是真的,那么您的密码不会以明文形式保存
后端可以保存MD5散列,并将存储的散列与登录时接收的散列进行比较
但是,如果他们每次在登录时都创建一个新的salt,那么是的,他们可能会将您的密码保存为明文,除非他们的实现类似于md5(salt+md5(password))
如果你想了解更多信息,SO上的Security有很多关于散列的帖子。我会说这个问题更适合放在@George上,谢谢-我应该删除这个并将其移动,还是由版主移动会更好?嗯……服务器不更可能存储散列版本的密码,而不是在每次登录尝试时存储明文版本并对其进行散列?不管怎样,我们不知道服务器做什么或不做什么,也不知道它的安全性如何。问题是密码周围的salt在重新加载时会发生变化,并且所有的salt都被散列在一起。@MikeRockett如果salt与MD5散列一起发送,这不是问题。他们也会把盐储存起来。即使它没有被发送,也可以存储在会话中。那么,考虑到它都是散列在一起的,服务器如何在不知道我的密码的情况下获得相同的散列呢?如果密码是分开散列的,对我来说是有意义的…哦,你完全正确,我没有注意到这是在登录时发生的。如果它在每次登录时都创建了一个新的salt,那么一切都会发生变化:是的,他们必须将您的密码存储为明文,除非他们的实现是某种
md5(salt+md5(password))
或类似的。我将编辑我的答案以反映这一点。谢谢你-我将向服务提供商提出这一点,看看是否可以更改。