一种关于网站防 ddos 的想法

2020-04-29 10:02:42 +08:00
 koswu

网站能否在被访问之前加入一段挖矿脚本,大约运行个几秒钟,达成一定的工作量证明才能打开。 但是关键是* 挖矿能否在这么短的时间做出工作量证明?* 如果可行的话我觉得是一种防止 DDOS 的好手段,你 D 我,我就拿收入,这样? 希望有懂的人解答一下

7050 次点击
所在节点    奇思妙想
50 条回复
learningman
2020-04-29 12:05:53 +08:00
先去了解 7 层,再去看一下 HTTP 。最后学一下 js 。
然后你就会自己把这个问题收回去了。
已经有这么多人告诉你,你概念理解有问题。你还在抱着自己的观点不放。
learningman
2020-04-29 12:06:07 +08:00
你真的知道 cdn 是个什么东西吗?
xiaoxiuaoliang
2020-04-29 12:07:22 +08:00
没有人比我更懂 ddos 了 哈哈
jugelizi
2020-04-29 12:09:57 +08:00
你是重新定义了 cc
wunonglin
2020-04-29 12:11:33 +08:00
@koswu #20 但是正常的人敲门也进不去的知道吗
imdong
2020-04-29 12:11:57 +08:00
不太清楚自己的理解对不对,也不知道下面的比喻对不对。

假设一家咖啡厅可容纳顾客 100 位,同时接受点单 3 位。

DDoS 攻击:叫 >100 个打手去咖啡厅堵着;
CC 攻击:叫 10 个人轮流去吧台点单,但不付钱,点完就跑。

楼主工作量证明:点单需要先答一份问卷调查。
工作量证明时 CC 攻击:快给老子拿一张卷子,老子要答题,然后转身就走了...

工作量证明优化:入口处自取问卷,点单时提交问卷。
优化后 CC 攻击:到入口处不停的拿卷子去卖废纸...
再优化 CC 攻击:拿了卷子,随便划两下,拿到吧台去要求点单,然后跑路。
ohao
2020-04-29 12:14:37 +08:00
@koswu
” 网站能否在被访问之前加入一段挖矿脚本,大约运行个几秒钟,达成一定的工作量证明才能打开。 “

#1
我忽然想起来 主流浏览器 /杀毒软件 都基本禁止挖矿类脚本
你这一开始就 ”卒“ 掉了
其他都不用考虑了

#2
从用户体验来说 这种网站 除非 12306,或银行,大家没的选
否则都会直接黑名单

想法很好 但是太脱离实际了
imdong
2020-04-29 12:16:39 +08:00
工作量证明用来防机器人爬虫 /骚扰,倒是可以的,就是 JS 的执行效率吓人,随便用其他语言实现,效率会高很多。

比如发帖页面加入这个工作量证明,发帖时检查一下,是没毛病,但是机器人实现了这个,恐怕挡不住啥...
koswu
2020-04-29 12:36:10 +08:00
@wunonglin
@imdong
@learningman
我更新了一下表述,请再看一下
wunonglin
2020-04-29 12:44:55 +08:00
@koswu #29 你说你只返回静态文件,ok,我拿几个肉鸡开去堵塞你前置服务器,你的服务自然不就用不了了吗
koswu
2020-04-29 12:52:38 +08:00
@wunonglin 前置服务器可以很容易就扩容,但是后端不容易啊
learningman
2020-04-29 13:11:21 +08:00
我如果想搞崩你的服务器,最简单的方式就是直接堵死你的端口,我甚至连你这个端口上在跑什么都不需要知道。
你这个有用的场景只限于攻击者的攻击能力有限,甚至都不能够打满你的带宽,但是说实话基本不太可能吧。
想挖矿直说,别找理由。
koswu
2020-04-29 13:21:26 +08:00
@learningman 至少这样搞的话相当于把问题转化为了一个拼流量的问题,扩容静态页面的流量总比扩容动态页面简单吧

还有,我不挖矿,没有利益相关,我只是想到既然要有工作量证明,应该能够* 顺便 * 挖矿而已,纯脑洞
q1angch0u
2020-04-29 13:25:09 +08:00
现在的 cdn 不就是这么做的吗……您应该把标题改为,如何将 cc 转化为 ddos
koswu
2020-04-29 13:40:41 +08:00
@q1angch0u 可是 cc 就是 ddos 的一种呀,cdn 我已经不敢用这个词了,不然又要有人说我不懂乱说了
eason1874
2020-04-29 13:53:43 +08:00
@koswu 根据你补充的内容,你所说的是防御 CC,而不是防御 DDOS 。这玩意儿在稍微有一点规模的网站都有了,一般刷新频繁一点就会要求你验证,验证方式通常是输入验证码。

利用验证过程赚钱的也有,谷歌的验证码项目 reCAPTCHA 就是利用用户输入验证码去做人肉 OCR,把旧书扫描图片分割成小图给用户当验证码输入,然后根据多个用户输入的结果去分析得出对应的文字。

防 CC 成本也不低的,成功防御的前提是你的前端服务器得扛住所有攻击请求,因为前端要负责发放、验证 Session 和验证码,所以除了带宽要大,计算量也不能低。
koswu
2020-04-29 15:03:02 +08:00
@eason1874 我知道很多网站都有了,所以我最开始相问的是,挖矿能否拆分能那么小的单位进行工作量证明的单位
结果楼歪得全部在说这不是 ddos
way2explore2
2020-04-29 15:32:41 +08:00
嗯,我就不讨论 DD 和 CC 了,因为前边已经大量被讨论,有些过于严苛,题注可能感觉不舒服。

我想说的是别的币我不知道,但比特币绝对不行,

- 比特币的奖励周期是十分钟!!!!!!!!!!!!!!!!

另外一点,
- 即使你自己设计一款区块链加密货币,调整到 0.5s ,你也几乎不可能
- 因为不是只有你一个人在挖,单用户单 brower 的算力几乎可以忽略不计


于是乎,最终你的脚本只能沦为,侵入式脚本,在网站上骗用户的算力,给你自己挖矿。

当然如果你只想要工作量证明。可以,运行这个


```
for (let i =0; i< 999999999999999999999999999999999999999999999;i++){
console.log('a wu');
}
console.log('I did it, I can visit the page now');
```
mizzle
2020-04-29 15:44:13 +08:00
理论上应该是可以的,通过降低挖矿难度,比如运算结果要求 128 位中前 100 位为 0,那么你要求前 60 位为 0 即可通过,找答案的算力要求降到挖矿的 1/2^40,来让用户可以在小片时间算出来。
然后从这些结果中找是不是有天选之子提供的答案有前 100 位为 0 的,有 ( 1/2^40 * 访问量) 的几率挖矿成功哦。
dorothyREN
2020-04-29 15:55:39 +08:00
在攻击方会执行你的脚本的时候你这个想法才会成立,你猜 cc 攻击方会执行你的脚本吗?
人家根本就不需要你返回的内容,人家只要把请求发到你的机器上攻击就算完成了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/667184

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX