上次网站被人当后花园这事真给我恶心坏了。就那个放客户小程序的站,大清早收到老板连环call,点开一看首页愣是被换成骷髅头,数据库还被删得只剩一行脏话。空调房里硬是给我气出一身汗。
把主机当破屋收拾
先登进虚拟主机后台翻家底。跟查违章建筑似的,把犄角旮旯扫了个遍:
- 揪出仨后门脚本:在图片文件夹里翻到"*"这种挂羊头卖狗肉的,打开全是eval(base64)解码的鬼画符
- 清掉古董插件:两年前装的相册插件早停更了,更新记录里明晃晃写着"修复高危漏洞",臊得我直接拖进回收站
- 扫出配置裸奔:发现根目录躺着*,点开差点背过气——数据库账号密码全用明文晾着
给服务器大门换锁芯
打电话催主机商升PHP版本那叫个费劲。客服非说老程序兼容不了PHP7,我直接把测试站甩过去:"你看看这站跑7.4三个月了出过事儿吗?" 这才磨磨蹭蹭给升了。
改文件夹权限时差点翻车。学网上教程给目录设555权限,结果用户上传功能直接罢工。急吼吼把upload目录权限回调755才救回来,现在想想还后怕。
数据库加装防盗网
重点收拾SQL注入这个老赖:
- 给用户输入拴链子:所有$_GET和$_POST塞进htmlspecialchars里滚三圈
- SQL语句穿盔甲:把$conn->query("SELECT FROM user WHERE id=".$_GET['id']) 这种自杀写法全换成带问号的prepare语句
- 错误日志当警报器:在*里把display_errors关掉,错误日志存到public_html外头的私密路径
给登录口焊铁栏杆
看后台登录记录差点心梗:
- 用awstats日志分析工具发现,黑客拿"admin"账号每半小时撞库一次
- 登录页验证码形同虚设,四位数验证码十年不换
连夜给后台加了双保险:
- 登录熔断机制:同IP五分钟错三次直接封半小时
- 验证码动态埋雷:改成点触式图形验证,每次加载随机扭曲字母
- 密码学蚂蚁搬家:把用的mysql_escape_string这种老古董全换成password_hash()
天亮查监控逮耗子
凌晨三点设完所有防护,特意在根目录留了个蜜罐文件叫"database_*"。第二天午饭时查看访问日志,果然逮到痕迹:
- 凌晨4:17有巴西IP访问/wp-admin(可我这是纯手写站)
- 蜜罐文件被下载了11次
- 登录失败记录里出现暴躁尝试:"fuckyou!@#","你妈死了123"
现在这套组合拳打了四个月,安全预警邮件再没亮过红灯。前两天朋友服务器又被挂黑链,我直接把这篇攻略甩过去,那小子看完回了八个字:"早看见这个多省心。"