Archive for August 14th, 2004

ipb2的用户验证机制的原理

Saturday, August 14th, 2004

近日制作一个和ipb整合的网站,需要搞清ipb的验证机制,以便整合登陆。
今天把ipb升级到了ibp2,才发现不能用了…原来ipb2对用户验证机制作了比较大的改动。
ipb1中用户密码经过md5 hash后存放在ibf_members表中,字段为password。如果使用cookies,在cookie中存放的就是这个hash值。
ipb2首先去掉了ibf_members表中的password字段,转而在其中添加了一个member_login_pass字段。另外增加了一个ibf_members_converge表,其结构如下:
converge_id, converge_email, converge_joined, converge_pass_hash, converge_pass_salt
“converge”即”集中”之意。ipb2除了ipb1中的用户名登录方式外,还增加了一种email名登录方式。设用户输入的密码为”passwd”;salt值为”salt”(该值即converge表中的converge_pass_salt字段,其值为由generate_password_salt($len)函数随机生成的5位字符串。)。则通过判断 md5(md5(”salt”).md5(”passwd”)) 是否与converge_pass_hash字段相同来验证登陆。看那三个md5有够BT吧~~
而存放在用户cookie中的pass_hash则是ibf_members表中的member_login_pass字段,其值为对一个由generate_password_salt($len)函数随机生成的60位长的随机字符串md5 hash后的值。这样就算cookie中的pass_hash失窃,用“爆破”的方式得到的也是一个毫无意义的密码。这个还是很有意义的。
录此备忘。
update:
posted by POPOEVER, 08/15/04 00:47:08
那是要为 IPS Converge 脚本应用做准备,它是一个 IPS 的各种程序的登陆中心,类似于 MSN 的 Passport 机制,一处登陆,各处通行~~~
http://www.invisionboard.com/converge/index.php