如何搭建一个高匿名的内部论坛

入职腾讯的时候,同学们给我推荐了一个App:同事, 这个App 为同事之间提供了匿名交流的平台,各种高压线、污秽色情的信息络绎不绝,相当刺激。
这个App 17年后期就出现HTTPS 证书过期、短信通道欠费收不到短信等问题,看起来要倒闭。有时候在想如果要搭建一个替代品,该如何平衡匿名性,又能验证是腾讯员工,我会怎么做,最后想了一个折中的办法。
前提:员工不信任论坛管理员。

 邮件列表

一开始的想法是通过邮件列表,因为邮箱还能匿名注册,而且有各种各样的移动客户端。怎么验证员工身份?无论是工作邮箱发验证码还是什么,只要涉及员工工作邮箱,服务端就有可能记录对应关系。或者通过邀请制度?又感觉不够收敛。做一个网站,只有内网可以访问,然后每日生成邀请码?Bingo,突然想到可以限制注册的来源,限制内网注册即可。

 Flarum

没做邮件列表,基于Flarum开始搭建。
域名:免费的.tk 域名玩一玩,开隐私保护,tongshi.tk。
服务器地址隐藏:cloudflare 免费CDN,全站开启。
收集腾讯内网出口的IP 地址范围,三个段:
14.17.22.0/24
103.7.28.0/22
103.7.29.0/24
开启HTTPS 支持,防止在公司内网访问,被中间人监听 🙈 。
由于使用了CloudFlare 做全站CDN,遇到一个问题,没法校验客户端IP,2个解决方法:
map $http_cf_connecting_ip $allowed {
    default deny;
    ~\s*14.17.22.*$ allow;
    ~\s*103.7.28.*$ allow;
    ~\s*103.7.29.*$ allow;
}
测试了一下,客户端自己伪造这个头,无效,还是会被CloudFlare 重写为正确的客户端IP。
安装插件reflar/user-management,关闭邮箱注册。
Disable email registration
在注册接口上限制一下:
location /api/reflar/usermanagement/register {
    if ( $allowed = 'deny' ) {
        return 403;
    }
    try_files $uri $uri/ /api.php?$query_string;
}
搞定~
tongshi-tk
试验一下想法,过三天这台机器就到期,关了。
总结一下思路,通过办公网出口IP 做注册限制,较宽松的员工认证手段,又保证了一定的匿名性。
当然如果公司自己愿意做的话,在内网搭就非常简单了。然而这东西对于公司来说是洪水猛兽,审查还来不及。腾讯内网的乐问有匿名发帖功能,然而又有几个人信任匿名的安全性呢。