-
Notifications
You must be signed in to change notification settings - Fork 413
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
修改网站 密码 和 cookie 的散列计算方式 #252
Conversation
+ use function password_hash() and password_verify() to create or verify password hash
回顾经典之 SomeBottle/OdIndex#21 |
这个我看文档有这种那种的前提条件不太好搞,通用点比较好 另外我比较关心 cookie 那里那样计算 hmac sha256 有没有什么问题 |
建议立即前往早已于 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
建议大脑升级argon2id
不赞同。考虑到本软件经常在各种电子垃圾级硬件环境部署,Argon2的开销可能过大。个人认为,攻破本软件的用户几乎不会有任何收益,没有任何使用复杂散列算法的必要,能防止撞彩虹表就已经可以了。
关心 cookie 那里那样计算 hmac sha256 有没有什么问题
我觉得有问题,hash_hmac('sha256', $p['pw'], $p['id'] . $p['pw'])
这里几乎没有体现HMAC的作用,和直接SHA256是一样的
但是也无所谓,理由同上。
行,我补齐另外几个版本文件就合并 |
protip:bduss+stoken可以直接改绑无需短信验证 |
这个 pr 真正在修的小漏洞一直以来都没被人利用(至少明面上没见过报告)确实说明收益实在太低了,没人愿意去干…… |
这类算法的开销都是可以通过一个参数来 tune 的,对于 Argon2 来说就是 内存消耗 枚举次数 并行度 …… |
由于 HMAC 的内部构造杜绝了 SHA-256 的 Length extension attack 问题,所以在 SHA-256 不被破解的前提下, HMAC-SHA256 可以看作一个伪随机函数的。 |
本软件的 cookie 可能没有很大价值,但用户的明文密码值得最大的努力去保护,因为用户有很大可能在其它更重要的地方重复使用同一个密码。虽然获知本平台的密码等价物可能价值不大,但如果一个弱的密码哈希算法导致过于容易字典穷举用户的明文密码,那么这是一个值得重视的安全问题。
|
确实是这样的,我当时想得复杂了
目前用的是 BCrypt 处理密码,应该也行? 由于只会在 登录/改密码/注册 时会调用,效率这方面应该还行 |
你tune来tune去就算tune成最低开销也比不过现在的简单方法🤣 |
我不太关心落库时存的是什么,改 BCrypt 只是顺手行为,算是一种双保险吧,真被脱裤时,数据库里面明文bduss和stoken都比这个密码哈希有用 |
如果直接使用 SHA-256 的话就需要这种复杂的考虑。 HMAC 不受 length extension 影响所以无所谓。
bcrypt 行,或者 PBKDF2 也行。无非就是在多大程度上提高暴力穷举用户密码的开销的问题。 |
kndil神在贴吧辅助工具头子鸡血神和starry神双重指导下发威了! https://github.com/BANKA2017/tbsign_go |
修改
PHP >= 5.5.0
)使用password_hash()
+PASSWORD_BCRYPT
用以替代原有的md5(md5(md5($pwd)))
/ 用户自定义计算方法,如果运行主机的 PHP 版本不支持的这个方法,将会回退到原有的方法password_verify()
(PHP >= 5.5.0
)校验用户登录时提交的密码,若不支持该方法同样会回退到原有方法计算并比较hash_hmac
计算密码哈希的 hmac-sha256 作为 cookie,密钥为 id 加上密码哈希本身,由于我对加密了解不深,这样做是否妥当,有没有更好的方法还请在下方评论指出tc_users
中记录帐号密码的列pw
的类型将会修改成TEXT
以应对更长的密码哈希会有什么影响?
password_hash
等方法的主机上password_hash()
处理过的密码哈希EncodePwd()
方法的插件需要调用VerifyPwd($pwd, $hash)
校验哈希是否合法,而不再是重新生成一遍再比较是否相同,由于 Bcrypt 的耗时还是挺高的,可能需要考虑继续使用EncodePwd()
还是换别的方法其他
附带的那个
update5.00to5.01.php
请以最终版本号为准