关于论坛密码的技术讨论


所有跟贴·加跟贴·新语丝读书论坛

送交者: 你太有才了 于 2009-04-19, 17:41:41:

当你登录论坛,或在论坛发帖的时候,你输入用户名/密码,然后按“发送”。这时候,你的密码一般是作为纯文本不加密发送的,很多人都可以看到你的密码:你的局域网上的用户,从你的Pc到服务器沿途的路由器,服务器上的程序。
出于安全考虑,密码在服务器的数据库中一般不用明码保存,而是进行hash之后再保存。它的意义在于,对用户的输入,用同样的hash算法再算一遍,如果和数据库中的值一样,说明密码正确,否则密码不对。(一般选择的hash算法使得不同密码产生同样hash(hash collide)的概率极小)。
由于hash算法一般都是公开的,如果数据库中的密码hash被窃,密码很容易被brute force攻破,特别是如果密码是简单的单词的话。所以,一般都会把密码加上salt再hash。Salt存在另外的地方,以保证和密码hash不在同一个地方。
下面是假设情况:
1.    论坛xyz的密码用明码保存,xyz的管理员把密码数据库交给了论坛xj的管理员。这种情况下,论坛xj的管理员已经得到论坛xyz上所有用户的密码了。
2.    论坛xyz的密码用hash保存,xyz的管理员把密码数据库交给了论坛xj的管理员。这种情况下,论坛xj的管理员没有论坛xyz上用户的密码,但当某个xyz的用户登录xj时,可以得到该用户的密码(应为该用户自己输入了),并验证和xyz上的密码是否一致。
3.    xyz的管理员没有做任何事情,论坛xj的管理员说,你可以用xyz的密码登录xj。你把你的用户名/密码交给xj, xj用你的用户名/密码到xyz成功登陆/发帖,确认你的密码正确,然后把你的密码hash后存在xj的数据库,你以后登录xj就不用去xyz确认了。
我不知道为什么有人会认为密码被骗了。再老的论坛也不会把密码用明码保存,所以情况1不会发生。情况2和3其实没有本质区别。当你在xj网站上输入密码,登录的时候,你自己把密码交给了xj。用户因为信任xj,把密码交给xj确认,xj才会得到密码。




所有跟贴:


加跟贴

笔名: 密码: 注册笔名请按这里

标题:

内容: (BBCode使用说明