CSRF 和一些其他安全问题
Closed this issue · 16 comments
访问后会发现你的 http://rust-lang-cn.org/ 被 lougout 了,实际上还可以用来进行发帖回帖之类的操作。
修复方案可以是检查 Referer 或者加 CSRF Token。
另外还有一些其他的小问题:
- 固定的
logined cookie
(其实是iron-login
的问题),实际上可以加一个nonce
避免每次的MAC
都一样。handlers/user.rs#L600 - 非常数时间的密码比较,可以用 constant_time_eq。handlers/user.rs#L626
- 过弱的
password hash
,建议使用 argon2。handlers/user.rs#L81
我这里好像没有出现这种情况。用你的那个注销后,发帖是不能发的。目前我的运行环境是 Windows Chrome,无论是用户名密码直接登录,还是Github登录都是正常的。
我的意思是……
除了可以让你 logout 之外,还可以帮你发帖和回帖。但这只是个 POC,只让你 logout。
也没有说 logout 之后不能 login。
在 2016年06月24日 13:22, ChenMingMing 写道:
我这里好像没有出现这种情况。用你的那个注销后,发帖是不能发的。目前我的
运行环境是 Windows Chrome,无论是用户名密码直接登录,还是Github登录都
是正常的。—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
#15 (comment),
or mute the thread
https://github.com/notifications/unsubscribe/AF_tqafjnhdpr09yaS9VtA6XTL02G96Fks5qO2mDgaJpZM4I9dz8.
我了解,我说的是,无论在那种情况下登录。用这个POC注销之后,我都是无法看见发帖按钮,和回复聊天窗口的。难道你是用postman手发的请求?
访问后会发现你的 http://rust-lang-cn.org/ 被 lougout 了,实际上还可以用来进行发帖回帖之类的操作。
跨站脚本欺诈,无法复现此bug,logout之后我无法进行发帖回帖操作。
不过csrf_token确实要加上。
...纯少当年下班给我讲过来着...
这是我偷懒了,因为也还没有什么关键东西。要是Rust有像ror那样直接从框架层上加了token就好了,自己加太麻烦了
额,最近注意力不集中。
nginx refer module
服务器好像直接拿的cargo起的,不知道李兄有没有用nginx代理一下。
@liyuan462 哦,只配过php-fpm的,其他的就没怎么折腾了。
已经对用户登录、用户注销、发帖、回帖等几个操作加上了refer检查