网站验证码不能正确验证的原因及排查处理方式

发布时间:2022-12-09浏览次数:2586 次
最近有客户遇到网站用户及管理员登录界面的验证码统统失效,如论如何填写都提示验证码错误,导致正常用户不能登录。一般而言,如果程序之前没问题,且服务器近期也未进行操

最近有客户遇到网站用户及管理员登录界面的验证码统统失效,如论如何填写都提示验证码错误,导致正常用户不能登录。一般而言,如果程序之前没问题,且服务器近期也未进行操作的话,忽然遇到验证码不能正确验证,大概率是服务器可用内存空间不足造成的,因为验证码在每次更新时都会向内存中写入数据,以用来进行验证,于是指导客户去查看其服务器空间是否撑满。

果不其然,服务器磁盘占用率已达到100%,一般的网站程序最多也就几十几百MB,那是什么数据占满了磁盘呢?指导用户去查看运行缓存目录,果然存在近30GB的日志数据。指导其删除这些文件之后,验证码验证功能恢复正常。

因此,如果您也遇到网站验证码不能正确验证的问题时,首先应该去检查磁盘目录是否正常,当然,造成验证码不能正确验证的原因还有很多,但磁盘被占满是最常见的因素。

当然,仅仅删除磁盘上的日志文件仅仅只是治标不治本,还需找到其根本原因才行。经沟通,客户的网站每日IP范围大概在1k-2k之间,按这个流量来说,日志文件不会有这么大的。因此,我们经常了远程协助,主要的步骤处理流程基本如下:

一、修改/优化网站的日志配置文件

当网站磁盘被占满时,首先应该检查我们的日志生成文件是否正常,日志是否正常,配置是否科学。

日志就像飞机上的黑匣子,可以在网站出问题时,及时检查追溯原因,但因此容量也有限,所以不能什么东西都往里面写,一定要科学配置,仅存储一些关键信息即可。

关于如何优化/修改网站的日志配置文件,请参考:《ThinkPHP网站日志文件配置说明

二、禁止恶意IP访问

因为客户的网站每天的访问量在2000IP左右,但是在查看其日志文件时,发现几乎每秒收到几十次的请求,这显然是存在恶意的攻击的,查看新生成的日志文件,分析网站的日志,关于如何分析网站日志,请参考《360星图-网站分析工具的下载和使用》。

经过分析,我们发现了大量的类似IP段的访问,如下图所示:

因为客户使用的是宝塔面板,我们第一时间想到的是封禁这些特殊的IP段,具体方法请参考:《如何禁止恶意IP访问网站

果然封禁之后,日志写入的速度降慢很多。但还是存在很多杂乱无章的IP的访问。

三、禁止某一类user-agent标识的浏览器/设备访问网站

根据以往经验,这样的攻击,一般都是使用软件进行扫描造成的,我们通过读取网站的日志(非服务器日志)进行分析,发现有一类UA标识头比较怪异,如:

"Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Mobile Safari/537.36"

乍眼一看,确实非常像是正常的浏览器设备访问,但其中存在的“SM-G900P Build/LRX21T”比较特殊,上网查询,果然很多人都遇到这个UA标识设备的扫描,通过测试验证后,将该标识设置为禁止访问。日志文件恢复正常。设置方法请参考:《如何禁止某一个UA标识的设备访问网站的方法》。

四、禁止小众搜索引擎爬虫的干扰

基本上,通过以上三步,客户网站的日志问题基本就算是解决了,但是第二天客户又找过来,说是又发现了很多没怎么见过的UA标识设备的访问,咨询要不要在设置到UA黑名单中,经查看为搜索引擎的蜘蛛,其中除了谷歌、百度、华为之外,还有一些其他的不曾听说过的搜索引擎爬虫。因此帮客户对这些爬虫进行屏蔽,具体方法请参考《屏蔽垃圾搜索引擎爬虫的方法》。

关于以上四步的详细操作,因为时间及篇幅等原因,我们将专门用新的篇幅做以详细说明。

另外要说的是,作为一个网站运营人员,大家一定要养成,经常查看网站日志文件的习惯。

扫一扫,在手机上查看