如何防御cron攻击?
前几天朋友说他的站消耗云豆厉害,然后看日志发现大部分是访问的cron.php。然后还不是内网IP访问的,也没加过监控之类的,估计是被别人恶意访问了。但是觉得修改名称也有些不安全,把IP加黑名单效果也不会很强。
因为IP可以随时换,所以我加了一段代码来解决了这个问题。是把cron.php加了一个get传递了参数,然后在config.yaml修改了一下cron,就把恶意访问的问题解决了,这几天消耗肯定也减少了。
这个例子告诉我们,如果你使用的是开源程序,当别人找到你的这个开源程序时,可以看代码想方设法消耗你的云豆。所以我们要吃一堑长一智,虽然技术含量不怎么高,但是还是会安全很多的。毕竟他不知道你的云豆消没消耗,他也只是去试着去攻击你的程序。。但是我设置的比较猥琐的,因为一开始,cron是输出ok的,现在他没有GET去传递数据,也是返回的ok,但是现在的真正执行成功了,返回的是yes。
下面就进入正题吧,先把cron.php中加入下面的这句话。
if (empty($_GET['password']) || $_GET['password'] != 'user@test') exit('ok'); //password和user@test都是可以任意修改的
//访问方式就是 域名/程序名.php?password=user@test
然后修改config.yaml文件,
把单纯的cron.php后面加上“程序名.php?password=user@test”
这里的“程序名.php?password=user@test”不是绝对的哦。
如果你在if那个地方修改过password和user@test,那么这里也是需要修改的。
如下面这个例子。
- description: Task url: cron.php?password=user@test schedule: */1 * * * *