liyuan462/rust_lang_cn

CSRF 和一些其他安全问题

Closed this issue · 16 comments

POC

访问后会发现你的 http://rust-lang-cn.org/ 被 lougout 了,实际上还可以用来进行发帖回帖之类的操作。
修复方案可以是检查 Referer 或者加 CSRF Token。

另外还有一些其他的小问题:

  1. 固定的logined cookie(其实是iron-login的问题),实际上可以加一个nonce避免每次的MAC都一样。handlers/user.rs#L600
  2. 非常数时间的密码比较,可以用 constant_time_eqhandlers/user.rs#L626
  3. 过弱的password hash,建议使用 argon2handlers/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手发的请求?

@MiYogurt 你重新理解一下我的话…… 或者了解一下 CSRF。

@quininer 嗯, 谢谢指出,CSRF 我没有防,我会先加上referer检查

访问后会发现你的 http://rust-lang-cn.org/ 被 lougout 了,实际上还可以用来进行发帖回帖之类的操作。

跨站脚本欺诈,无法复现此bug,logout之后我无法进行发帖回帖操作。

不过csrf_token确实要加上。

...纯少当年下班给我讲过来着...

这是我偷懒了,因为也还没有什么关键东西。要是Rust有像ror那样直接从框架层上加了token就好了,自己加太麻烦了

@MiYogurt
我不是指你 logout 之后还能发帖- -,是指除了能帮你 logout 还能帮你发帖。

额,最近注意力不集中。

nginx refer module

服务器好像直接拿的cargo起的,不知道李兄有没有用nginx代理一下。

@MiYogurt 正式环境中肯定是要用nginx做前端的,毕竟只有一个80端口,而且还有静态文件要服务

@liyuan462 哦,只配过php-fpm的,其他的就没怎么折腾了。

已经对用户登录、用户注销、发帖、回帖等几个操作加上了refer检查