【RFC-048】注册页面加入“工作量证明”机制

变更内容:在注册账号的页面加入“工作量证明”机制,提高注册成本

变更理由:最近有极个别人使用脚本自动注册大量账号,注册以后也不发表任何有意义内容,短时间内恶意关注大量用户,辱骂他人。现有的验证码机制容易被滥用,可以直接用脚本填写其他内容,然后人工批量填写验证码,可以短时间内注册大量账号。

安全性考量:毫无影响。实现此功能无需知道用户的IP地址,User-Agent等。

浏览器兼容性考量:本站的TLS配置(强制SNI,只有ECDSA证书)已经过滤掉了大量旧版浏览器

讨论时间:截至2019年5月15日0时0分(UTC+8)

变更步骤:(选一个,说不定可以淘汰验证码机制)
  • 给注册页面加上一个按钮,鼠标点住30秒(暂定)不放才能通过验证(不可行,可以抓包绕过)
  • 注册页面“挖矿”,不挖加密货币,CPU做满一定量的工作才能注册,切换到其他Tab或窗口时停止“挖矿”(歧视低配CPU电脑和移动设备)
  • 在指定区域内摇动鼠标,积累满一定的熵才能注册
  • 注册页面放一个简单的小游戏,通关后才能注册
  • 大家集思广益,想一些点子,不损失匿名性又能反垃圾
4
分享 2019-04-12

110 个评论

目前的驗證圖片方式,不能過濾機器自動註冊?

應該被限制機器不是人吧
你去翻翻最近注册的账户,十有八九是脚本注册的,验证码成本还不够高
https://pincong.rocks/people/page-79

上百個支那人xxx,驗證圖片過濾被破解?
想法不错,但服务端如何实现呢?
不一定。看起来像他们用脚本填其他信息,填好了以后在手动一个一个输验证码
服务器记录 (时间戳 mod 7200),不一定非得7200,30秒就是这个时间戳加30,回滚到0的情况另外处理
还有,这个时间戳不能是32位,否则到2038年会出问题
反对部署基于消耗时间或计算量的验证,除非该网站成为营利性网站。
等待30秒,这是商业网盘对非付费下载者采取的做法。
挖坑,自己去看看“在网页中植入‘挖坑’脚本”是怎么被人评价的。

基于用户行为的验证可以考虑,前提是不能基于消耗时间或计算量。
但应当慎用,google的reCAPTCHA就是前车之鉴。

如果为了抑制恶意注册而一味增加注册者的注册成本,而注册者会权衡成本和收益,那么结果就是只有能通过注册获得利益的注册者才会来注册,而这些人是干什么的,大家早就一清二楚。
这没能回答我的问题。我的意思是变更步骤的那几个之一,如何实现验证。验证码的原理很简单了,客户端需要输入服务端随机生成的字符。这个比如鼠标点住30秒,是如何被验证的?
一开始鼠标按下去的时候向服务端发一个请求,松开或者失去焦点就向服务端发送另一个,两边时长小于30秒就拒绝,大于等于30秒则通过,时间戳取mod
注册者有些要爆什么料吧,或者就是想回答几个问题,貌似鼠标按下去30秒没那么难吧
这个用程序也可以模拟啊。
Hunter 已停用 ?
反對。
現行所有的驗證機制都有共同目的,就是僅少量增加用戶成本,而最大化大量註冊者的成本,且這也要考慮到邊際效應。
如果覺得文字辨識的成本太低,大可連設幾組,可是這樣也會直接把正常用戶擋在門外。
用戶會考量成本,大量刷號者會考量成本,改代碼的站方自然也會。
我覺得這成本太高了。
反正每次只能一个Tab注册账号,因为失去焦点以后时间会清零。而封账号只需不到10秒(我去,我说了什么)
不要考虑浏览器的行为。
程序必然是没有界面,直接向服务端发送若干个HTTP请求。
感觉你目前的思路是如何限制人类,但实际上需要做的是如何限制机器人。
服务端要知道客户端是人类而不是机器人,要进行一个简单的图灵测试(参见CAPTCHA的全称)。
但现在你注册了账号要答3题才能发文章,不一样吓退新用户吗?而且一般人不会没事天天研究品葱规则,有人只想发个文章报个料,结果没葱了
没有意义,因为可以用脚本发一个包然后等待之后再发一个,无法判断是否真的点了,还是用脚本模拟的,除非记录所有鼠标轨迹作为学习样本,然后用一些机器学习算法判断是不是真的用户点击,还是机器模拟。谷歌的二代验证码就是这个原因,点一下就可以验证是机器还是真人。
1:别人网页里放了广告的,访问者爱看不看,也没那么难吧?那为什么这个世界上存在adblock这个东西?
2:网站剥夺了访问者的这30秒,打算拿什么来反馈给访问者?一句虚无缥缈的“这里没有五毛”么?
3:有句话叫做“防君子不防小人”,形容的就是这个。
最好的办法是开一个品葱里区,邀请和审核注册,新品葱威望大于一定值的用户自动被邀请,同时恢复旧品葱数据和账号(如果可行)
天哪,这么快就要用人工智能了,品葱可不是Google,而且用人工智能也非常侵犯隐私
看来我的方法不可行?你想一个吧。如果维持现状,品葱人我估计要走光了
那这个就没有任何意义,因为完全可以机器模拟,我只需要多线程(线程数为n),每个线程获取一个Cookies,发一个包等30秒再发一个包,就可以30秒注册n个小号。在下一个30秒内我只需要输入这些验证码,就可以无间断注册。
说的对,注册成本太高,最后只有专门捣乱的人会注册。
实在不行就Google验证码
我去,Google?这公司收集了多少数据?而且对VPN和Tor验证码难度都是变态级的
不开放里区的方法也有,就是新注册用户隔离制度。仍可随意注册账号,但提供两个View,即新注册用户区和正常用户区。默认是正常用户区,也就是仅显示正常用户的发言,新注册用户发言仅在新注册用户区显示,注册后用户可以切换View,来选择是否观看新注册用户发言。被正常用户赞的回答和问题会在正常用户区显示。

新注册用户变成正常用户的方法有三种,一是威望达到一定程度,但需要老用户随时查看新用户区来把回答和问题顶上来,二是转正申请,由五十名管理者审核通过,三是通过邀请码,正常用户邀请注册则直接转正。
說的沒錯,所以我不喜歡任何形式的限制發言當下,因為我相信所有言論可以透過演算法來呈現用戶喜歡的頁面,例如自動摺疊。
另外說點私人的,我覺得你被特定人士盯上了,所以想要把那時間很多的傢伙消滅。
或許你們私下有恩怨吧,連用戶介紹都要罵人。
可是,同樣身為管理員和積極用戶,我怎麼沒被盯上?
有人的時間很廉價,難道你的時間也很多嗎?
想改善用戶體驗的心態,我很支持,可是我覺得題主有點情緒化了。
我不太在乎大量灌水,頂多覺得每天的首頁變化很快,可是現行的登入驗證碼已經讓我覺得困擾了,我希望有更智能的驗證方式。
难道区块链要崛起?因为发帖要钱,大家只发特别重要的内容,自然没有垃圾。但是放在现在,谁会交钱发帖?而且还暴露身份
注册时可以选择填写转正理由,也可以选择不填写,通过提升威望的方式转正。此方法不会影响正常讨论的用户,因为正常用户一般会填写合理的转正理由,大滥权时代会很快得到处理。

此外,此方法仍可保证小号匿名性,注册小号发言的只要有一个大号帮忙把小号发言顶到正常区即可,但明显增加捣乱成本,因为捣乱者必须有一个大号把他小号的发言顶上来,管理员看一下谁顶了这些垃圾发言就可以一瞬封禁,捣乱者就需要重新养点赞大号,成本明显增加。
我时间还多?可能是因为我太洁癖了?
我也不记得私下里跟什么人结仇啊,就因为我封了别人20多个“支那”小号?
因为你没封他的捣乱小号,我之前也没被@,封了一个号就被@瞎骂了。
他匿名瞎骂的号我看不到,要是我也能看到,马上给他橄榄(我币圈人竟然恶俗化了,666)
你可以尝试把他的@baiyubrother 封了,因为这个号在https://www.pincong.rocks/question/3311问题评论下瞎骂,看看你封完之后会不会被骂
匿名信息根本没写在数据库里,是写在本地log里的,所以查看匿名用户到底是谁需要登入服务器查看,会暴露安全性,品葱服务器的防火墙设置是仅开放443端口
日后可以考虑加入后台管理员(小二admin等)查看匿名用户真实身份功能,但对其他用户不公平,可以采取管理员投票查看功能
现状是用户注册需要提供一个用户名,输入并重复输入密码,输入图形验证码。
这个现状,维基百科自2001年维持到今天,人走光了?

新品葱的问题在于早期(至今)都没有一个明确的、正式的行为规范,一切都依赖“管理员”和“大多数”的现场判断。这都是人治。人治下的群体,集体平权就是乱斗,自上而下就是极权,这样的群体如果不限制成员离开(剥夺自由迁徙权甚至监禁、奴役),结果就是人以类聚物以群分。而采用复杂验证机制,在防小人之前肯定先防君子,那么最终这个群体势必发展成乌合之众。

所以才有“宪政”。
看来你也知道看如何非评论匿名的bug了,有空可以一起修了,我只是觉得瞎骂对于骚乱论坛的效果比你迫真五毛效果好而已,我可没求你做什么事,想骂就骂没人拦你。要说唯一求的,就是继续捣乱,帮助新品葱发现更多bug。
Hunter 已停用 ?
我知道小鈣前輩之前的遭遇,大概是一周前了,更早好像是薄熙來的樣子。
我的文章曾經被支字頭大軍貼過支字形的支,我把它當作文字藝術,結果他後來被踩到摺疊了,我想這是我沒有被攻擊的原因。
舉一個我欣賞的用戶鹿兒前輩,她的文章底下幾乎也沒有搗亂的,我相信這源自於它的一笑置之和文章內容,據我所知鹿姐也沒有因為有人搗亂而封過它的號。
我不是說不該處理搗亂者,而是我認為有些行為根本沒什麼,就讓它發生也行,封了還要花自己時間。
另外,本站確實有真-五毛,帶風向的那種,這危害比支字頭大很多,我一度想使用封禁功能,但後來還是相信群眾的力量,讓它們逐漸沉默了。
RFC-002就是立宪啊,竟然被搁置了?比特币以太坊有白皮书,EOS还有宪法呢。你不说,我差点忘了这事
你说的真五毛和支字应该是一个人,因为那些言论是从知乎复制来的。他一波瞎骂之后会找一些关键词复制粘贴五毛言论,以此搅浑水。真正的五毛应该会做一些原创文字,而不是在其他地方复制粘贴,这明显就还是来捣乱的。
现状是用户注册需要提供一个用户名,输入并重复输入密码,输入图形验证码

维基百科要是不封禁捣乱者的IP,不都走光了?现在维基百科不仅记录IP,还禁止Tor和大多数VPN、代理用户。品葱做不到吧
唯一能做的就是观察新注册用户,否则仅凭一人就可以真正做到橄榄品葱。我甚至都可以提供一个迫真五毛橄榄方案:

由于目前验证码难度极低,使用谷歌OCR API即可识别(亲测,部分需要用contour segmentation),谷歌API每月1000次免费试用,1000次使用完毕之后获得训练样本,拿一个pretrained character recognition CNN训练这1000个样本,直接写出自己的自动识别验证码。

之后,爬虫知乎关于中国和爱国标签的问题和回答,自动用注册的小号评论得葱,然后提问五毛问题,小号自动粘贴五毛回答,还可以采取一些language style similarity clustering的方法把知乎和品葱相似的问题复制知乎的五毛言论来回答,整个论坛在一天之内就可以变成知乎复刻,由于全自动,封是永远封不完的。
算你狠
已删除
Hunter 已停用 ? 回复 小钙
再說兩句。
提供一個類似想法,如果使用python,也可以直接本地訓練。 參考 https://blog.csdn.net/Neleuska/article/details/80040304
現在沒有人這麼幹,是因為本站不值得,因此我認為刷號者只是出於報復或好玩心態,而不是真的想要拿下本站。
Hunter 已停用 ? 回复 Hunter ?
另外,如果攻擊者正在看這討論串,不管是支字頭複製人還是腳本大軍,我願意和你或你們聯繫,我的私訊應該是開的。
比如楼上这种发了一瞬削除就是利用回复就得葱即使删除的bug,由于你不知道他到底发了什么,很难通过用户踪迹去查看,也没有正当理由封禁。多攒些这种号到某个时刻一起发问题文章捣乱。

现在bug我基本都清楚了,不过都没有时间修复,时间都拿来黑屁了,,,
这个识别就是我说的,只不过我说样本来源是谷歌OCR,而它默认你已经有了一万样本。

这个人应该就是为了取乐而不是真正橄榄,或技术力不足以橄榄,但捣乱手法提供了这套系统的一些bug,还是值得称赞的。
这么说,是个自干五?义务为品葱找漏洞?我封他号反而害了品葱?
打脸了,啪啪啪
之前可以,今天应该是刚改了,不知道是哪个后台管理员改的,至少现在回答仍然可以。
就是因为现在这套系统写的太烂所以没有人pull,也没人愿意重写,就这么放着了。
又是一个bug,空白头像。品葱bug好多
封號不至於害了本站,但會延緩本站的自癒能力。舊品蔥有黃正宇之流,現有複製大軍,這些就像疫苗一樣,短期是種破壞,但長期可以協助本站抵禦更強的攻擊。
例如前幾天的502錯誤,如果是攻擊行為的話,很顯然比刷小號強了很多。
502据说是破解密码,一秒钟尝试太多次,服务器来不及响应别的请求,活生生的DoS攻击
我局的应该是某个在你国时间夜间活动的程序员大手(时区不明,作息正常应该是澳洲时间?),义务找漏洞。不过封号应该算是找漏洞的一环,因为需要模拟真实的捣乱环境。比如封了之后会重新注册,因此会寻找注册漏洞,如果不封就不会往这个方向找,因为没有必要,不过目前没有看到有什么注册漏洞。
话说,没赶上好时候啊,我这条RFC那么多人回复,要是能加葱就好了
如果是真的,说明服务端响应实在过于垃圾,膜乎没有问题恰恰也说明了这个问题。我寻思应该是设置的cache太少,不知道用的是哪个服务端(当然也有可能是sql查询资源太高),连cloudflare都放过的登录请求就能502实在是过于草生,,,
一個人單純暴力破解密碼也可以成為DoS,我是不大相信,還是希望站方能公布log或說明一下。
不好说,因为不知道他Cloudflare的安全级别怎么设置的。为了对VPN、Tor、代理用户友好,说不定设置了 Essentially off
不过CF都放过的请求可以CC说明服务端请求本身就有问题,无论是请求的什么页面,压力测试都是完全过不了关的。log应该是公布不了,因为服务器端口仅开放了443,没有其他方法访问服务器,除非临时修改防火墙规则,但太麻烦,我觉得万不得已应该没人会做
那服务器软件不更新了?没有人上去看看吗?
就是通过github pull request更新,但没有人request,至于为什么,我暂且蒙在写烂的后端里
不是,我是说服务器443端口总得有个Web服务器吧(Apache、nginx之类的),还有服务器操作系统也不更新?
没有更新的必要吧,除非爆漏洞
非得等到出Heartbleed或者Shellshock这种漏洞爆出来才更新吗?
应该是基本原则?如无必要无需更新,因为更新可能会带来更多漏洞,没有爆漏洞的老版本默认就是安全的
比如说,品葱用的是Linux服务器,那选一个保守的发行版好了,或者直接OpenBSD
如果品葱竟然用Windows服务器,我差不多就要退葱了
1:维基百科的ip tracker是为了贯彻行为规范,而新品葱连这样的行为规范都没有;
2:ip tracker是一种很有效的区分非正常活动的手段,但应该不是唯一的,维基百科选择了这种手段,新品葱可以选择其他手段,当然前提是有行为规范;
3:基于消耗时间或计算量的验证区分的是受试者是否愿意付出时间或计算量,而不是非正常活动,过于复杂的验证机制也是同理。
理論上是對的,可是實際上本站沒這麼大價值,出現支字小號已經算很稀罕了。
如果真的有人願意用零時漏洞來打本站server,就不只是502的問題了,搞不好續膜乎也得掛。
不过我仔细一想,用浏览器挖矿验证其实可行,挖矿之后转给某个账户上传hash给服务器验证,一分钟之内有效,模拟的方法只有真的挖矿,由于区块链特性应该是没法造假
请问挖矿验证什么?验证访问者的CPU频率是否超过2.0GHz么?
转给某账户上传?转给谁?他/她不上传就不能验证?这和人工验证有什么区别?
IP对鉴别你的运营商非常有用,没有IP就少了很多信息量啊
User-Agent应该也可以,但是太容易伪造
非得挖出一个区块吗?你这点算力慢慢等吧
不然没别的办法,我对这个没研究,不知道有没有币挖的快点的
wow对犯罪手法这么纯熟?
上次cc攻击应该是美国时间的夜间,你在转移调查方向@币圈奇葩
截止目前仍然没有解决问题评论下匿名辱骂刷屏的问题,姑且算是bug吧。
回楼上,美国时间夜间 = 澳洲时间白天,和定时活动的时间也很吻合,假如他在美国或欧洲,只能是熬夜CC了
admin 公共账号
@币圈奇葩8964 你知道zhina.red的挖币验证码是什么原理吗?
应该是嵌入一个widget
估计还要改一下,要不然Tor浏览器下用不了
admin 公共账号 回复 币圈奇葩8964
品葱能不能用?考虑TOR的兼容性,当然必须开启JS
admin 公共账号 回复 币圈奇葩8964
我不知道它是怎么在后端验证的,我不太了解数字货币,如果你知道的话能不能考虑重启一下这个RFC
assets/js/jquery.hashcash.io.min.js
$("#comment_submit").hashcash({key: "12345678-1234-4321-0000-123456789abc"})
然后到hashcash上注册账号?
用的别人网站,然后别人网站帮你存数字货币,记得定期提币,否则钱不是你的
数字货币一言以蔽之:你有私钥,币在区块链上,钱就是你的,否则钱就不是你的
admin 公共账号 回复 币圈奇葩8964
那这个挖币验证码是怎么实现的?后端如何验证?比如我前端挖过,怎么在后端确定我挖过了?
后端在别人网站上,别人网站给你一个状态
一切都封装好了
admin 公共账号 回复 币圈奇葩8964
所以我在问如果品葱要自己开发的后端话,需要如何验证这个币确实挖过了?如果使用其他的后端,我们早就用谷歌的验证码了
请参考https://hashcash.io/
全部都要自己写的话,很困难
实测,兼容Tor
admin 公共账号 回复 币圈奇葩8964
他们后端不开源吗?
API收费,没法开源
话说zhina.red多烧钱啊
如果能保证图形验证码不被人工智能识别的话,限制主楼所说的批量自动注册可以用以下逻辑:

1.输入用户名、密码和确认密码、当前表示的验证码后点“开始注册”,此时开始计时(随机30~60秒,页面上不显示剩余时间),按钮无效化,同时页面上需要显示醒目提示让用户记下当前验证码

2.等待时间结束后跳转画面,显示新的验证码和“确认注册”按钮,此时开始倒计时(30秒),用户在倒计时结束前输入“初次验证码+新验证码“并点击“确认注册”按钮则注册成功,否则注册失败,清除会话数据并回到初始画面
计时和倒计时都在后台进行,页面上只给出说明文字,不显示时间
1. IP限制,同IP某固定时间限制
2. Java 个人签名认证(WebRTC etc),一个签名只能注册一个账号
3. Shockwave Flash cookie,一个 cookie 只能注册一个账号
4. html5 调用 Javascript 调用 C# dll,之后即可读取主机辨识信息,包括MAC

2-4 可以穿透 VPN、隐身浏览器、DNS
1对VPN、SSR和TOR用户不友好
2-4并不能防止技术破解,cookie、签名、主机识别信息都可以软件批量制造,攻击的初期成本提高一点而已,甚至可以说是仅限制普通用户,反而对官方小号友好的方案
1、3、4有隐私泄露风险
> 在指定区域内摇动鼠标,积累满一定的熵才能注册

泛化指纹即减熵, 故此条有碍匿名

> 注册页面“挖矿”,不挖加密货币,CPU做满一定量的工作才能注册,切换到其他Tab或窗口时停止“挖矿”(歧视低配CPU电脑和移动设备)

把控好数量级即可
admin 公共账号 回复 dou4cc
用NP问题可不可以?因为多项式时间可验,后端验证不需要太长时间,而前端计算需要一定算力暴力穷举,加上点击验证码二者一起应该能增加不少注册成本
一般不用hash吗

要求求解难证明易
admin 公共账号
注册页面放一个简单的小游戏,通关后才能注册

可以加入倒车游戏https://hahaxixi.github.io/,连任50年才能注册,每个操作都上传,用机器学习检测是否人工游戏或是机器游戏
admin 公共账号 回复 dou4cc
hash有没有solving time upper bound?或者有没有其他attack的方式?

要发言请先登录注册

要发言请先登录注册

发起人

记住【反华不反共,反共不反习】。少割席,多做事。构建共识,形成组织。打倒共产党,建立新中国!

状态

  • 最新活动: 2019-07-25
  • 浏览: 6351