我有一个小型的游戏网站,有400名成员(约50人活跃)build立在MySQL数据库周围。 我是唯一的开发者,而且我是一个业余爱好者,所以我会公平地分享一些错误。
为了保护我自己,网站和我的成员的贡献,我有一个纯文本“我们遇到了错误”的消息,并自动给我发送PHP错误信息的服务器设置死硬。
当然,这在企业环境中永远不会工作,太过于沉重,但是我们的成员都很了解,因为我们一起发展了这个网站,而且我和他们中的大多数人都有私人关系。 他们也是一般技术性不善的老人,这意味着软弱的情况会让他们感到困惑。
该网站还使用PDO,无处不在。
/ backstory完成
我今天早上醒来发了90封错误邮件。 exception!
所有这些都是在2分钟的时间内触发的……最不寻常的!
错误信息是类似的东西
PDOStatement::execute() expects parameter 1 to be array, string given
看了我的代码,没有外界的干涉是不可能的。
所以我去抢我的stream量日志,发现东京的IP 219.117.193.20正在锤击我的网站,请求如下:
GET /search.php?type=basic%20AND%201%20=%201
第一个: GET /search.php?type=basic是有效的,并列在主导航栏中。 他(它?)正在追加的其他一切。
看起来像一个简单的Bobby Tables攻击。
所以这个进行了几分钟,100个电话,然后停了下来。
我向你们提出的问题是:
我是否应该打算对这个IP采取任何行动?
还是这只是知名度的代价,太频繁了呢?
你禁止IP? 子网? 你联系ISP吗?
只是好奇专业的服务器pipe理员在这种情况下做什么,我想它会发生得非常频繁…?
这是名气的代价。 每隔一段时间,有人会尝试与几乎每一个网站(例如,每两天对一个易受攻击的版本的phpMyAdmin进行一次扫描)。 由于所涉及的机器几乎都是僵尸terminal用户机器,所以对他们采取行动是没有用的(任何一种“主动对策”当然是完全错误的,但是即使试图向受害者报告受感染的机器也几乎是肯定徒劳)。
确保你的网站是安全的,只是继续你的一天。
既然你也是开发者,你可能会考虑编写一个适当的error handling程序来忽略和/或甚至触发一个“焦油坑”响应/处理。
你要做的第一件事是validation你接收到的每一个input,并完全参数化你传递给数据库的每个查询。 这样SQL注入攻击将不会成功。
正如@ womble所说,试图禁止IP或子网是毫无价值的。 无论如何,运行攻击的人甚至不在该IP上。 他们会转换到另一个僵尸,并保持它。
确保一切,完成任务。 攻击会失败,他们会感到无聊,继续前进。
您可以尝试使用自行生成的客户端密钥来保护您的网站。 只将密钥分发给您的会员,并每年刷新一次。
缺点:您将必须解释如何在所有types的networking浏览器中安装和使用该密钥。
更简单的方法可能是使用.htdigest密码保护您的服务器的保护。