Closed xalanq closed 3 years ago
经树洞管理员建议与允许,我将邮件往来内容搬至这里让大家参与讨论
https://github.com/thuhole/thuhole-go-backend/blob/a2d12eb1d3e1a3ba50981c9e5ba05795a2989cf8/pkg/utils/utils.go#L57-L59
这样 hash 是有很大风险的,原因如下:
用户端有两个操作:
然后在数据库里存储
理论上这三部分是存在一一对应关系的,并且大小是一致的(如果 user_token 设置过期时间的话可能会小一点),但 email_hash 和 email_nonce_hash 两块数据由于没有 nonce,所以无法确定其对应关系。
遇到的问题以及相应的解决方法:
最后要我说 6 这种人直接别管好了,就别提供这样的操作,谁没事删邮件啊
当然也可以通过以下方法进行缓解 6 这种情况的发生:所有 user_token 都会定期失效,比如 7 天(不能通过自动登录重制刷新时间,当然这样会损失掉一定用户体验,但是为了保护隐私可以告诉用户为何要这样做,我个人觉得这是可以接受的?),然后在用户每次登录的时候,都发一封 email + nonce 的邮件到用户邮箱,防止误删
另外在更新服务端之前,需要将现有的 email_hash 收集起来,用作通知旧用户,强制更新 nonce
本人没发过树洞,对树洞的交互逻辑与实现方式不太熟悉,所以可能有地方没想全,若有纰漏还需要大家指出来哈hhh
最后,这样做的话可能就没办法配合学校/有关部门的调查了(不过仍然可以通过日志记录 email_nonce_hash 与 ip 的方式配合调查?反正查 ip 是学校查,即使库被扒了别人也不知道这个 ip 是谁吧,除非是学校自己)
我们对安全性的保证,更多依赖于服务器加固,手段包括但不限于honeypot;CDN隐藏IP地址;iptables过滤不必要的流量;SELinux防火墙等。
我们目前能想到的优化包含以下几点:
欢迎大家讨论!
可行的一种生产环境技术方案:
可否允许用户自己选择nounce邮件的接收地址?清华邮箱不一定是安全的邮箱。
经树洞管理员建议与允许,我将邮件往来内容搬至这里让大家参与讨论
问题描述
https://github.com/thuhole/thuhole-go-backend/blob/a2d12eb1d3e1a3ba50981c9e5ba05795a2989cf8/pkg/utils/utils.go#L57-L59
这样 hash 是有很大风险的,原因如下:
一种可行方案
用户端有两个操作:
然后在数据库里存储
理论上这三部分是存在一一对应关系的,并且大小是一致的(如果 user_token 设置过期时间的话可能会小一点),但 email_hash 和 email_nonce_hash 两块数据由于没有 nonce,所以无法确定其对应关系。
遇到的问题以及相应的解决方法:
最后要我说 6 这种人直接别管好了,就别提供这样的操作,谁没事删邮件啊
当然也可以通过以下方法进行缓解 6 这种情况的发生:所有 user_token 都会定期失效,比如 7 天(不能通过自动登录重制刷新时间,当然这样会损失掉一定用户体验,但是为了保护隐私可以告诉用户为何要这样做,我个人觉得这是可以接受的?),然后在用户每次登录的时候,都发一封 email + nonce 的邮件到用户邮箱,防止误删
另外在更新服务端之前,需要将现有的 email_hash 收集起来,用作通知旧用户,强制更新 nonce
本人没发过树洞,对树洞的交互逻辑与实现方式不太熟悉,所以可能有地方没想全,若有纰漏还需要大家指出来哈hhh
最后,这样做的话可能就没办法配合学校/有关部门的调查了(不过仍然可以通过日志记录 email_nonce_hash 与 ip 的方式配合调查?反正查 ip 是学校查,即使库被扒了别人也不知道这个 ip 是谁吧,除非是学校自己)
via 管理员
我们对安全性的保证,更多依赖于服务器加固,手段包括但不限于honeypot;CDN隐藏IP地址;iptables过滤不必要的流量;SELinux防火墙等。
我们目前能想到的优化包含以下几点:
欢迎大家讨论!