网站总是被黑,通常不是黑客专门盯着你一个人打,而是你的站点在某个环节露出了容易被批量利用的破绽。攻击者用扫描工具全网抓取使用老旧程序、开放后台、存在弱口令的网站,一旦发现就自动尝试入侵。很多站长重建设、轻维护,网站上线后很长时间不更新密码、不打补丁、不看日志,等到被挂黑页、植入赌博链接或跳转代码时才发现问题。下面把最常见的入侵原因拆开讲清楚,并给出可操作的加固方法。

一、登录入口弱口令:最短的入侵路径
后台登录是最常被攻击的位置。攻击者会针对常见后台路径发起暴力破解,用几万条甚至上百万条常见用户名和密码组合反复尝试。像admin、123456、password、公司名加年份这类弱口令,几分钟就能被撞开。还有很多站点使用默认账号密码从未修改,等于把后台钥匙放在门口。另一个问题是多站同密,一个论坛数据库泄露后,攻击者拿到邮箱和密码,再用同一组凭据去尝试其他网站后台,成功率非常高。
对抗暴力破解和撞库并不复杂。密码至少使用12位以上,大小写字母、数字和特殊符号混合,不要使用与个人或公司相关的信息。后台管理账号不要使用admin、root等默认名称,登录失败次数要有限制,输错几次后锁定一段时间。有条件的话开启双因素认证,就算密码泄露,攻击者也很难进入后台。后台地址如果固化默认路径,也应该修改或限制只允许特定IP访问,这能直接过滤掉大部分自动扫描。
二、程序与插件补丁滞后:漏洞公开后的时间差最危险
使用开源CMS系统的网站,比如WordPress、DedeCMS、帝国CMS等,一旦官方或安全机构披露漏洞,很快就会有公开的利用脚本出现。攻击者根本不需要研究技术细节,只要用现成工具扫描特定版本即可。很多站长在后台看到更新提示,觉得现在网站正常,点一下稍后再说,一拖就是几个月。插件和主题的风险往往比核心程序更大,尤其是长期不更新、来源不明或破解来的商业插件,容易被植入后门或存在已知漏洞。
举一个常见例子:某个问答插件存在任意文件上传漏洞,攻击者可以把PHP木马伪装成图片上传到uploads目录,然后直接访问这个文件执行系统命令。由于uploads目录通常默认允许执行脚本,攻击者等于直接获得服务器操作权限。再比如某个SEO插件存在SQL注入,配合读取管理员密码哈希后,可以离线破解或直接重置账号。应对办法是开启自动更新,每月至少检查一次程序和插件版本。已经不再使用的插件和主题应及时删除,不要留下可被利用的入口。如果不方便升级,也要用WAF临时拦截针对已知漏洞的攻击请求,但最终还是要以修复补丁为主。
三、上传过滤和输入校验不严:SQL注入与文件上传是重灾区
网站只要提供上传功能,就必须在服务器端做严格校验。只在前端判断文件扩展名完全无效,攻击者抓包后可以把文件名改成.php、.phtml、.php5,或者利用大小写、双扩展名绕过。头像上传、附件上传、图片裁剪接口都可能成为突破口。一旦木马文件被上传并成功访问,攻击者就能执行任意命令、读取文件、进一步提权。上传目录应当禁用脚本执行,可以通过.htaccess或nginx配置让该目录下不解析PHP,即使被写入木马也无法运行。
SQL注入通常是因为程序拼接SQL语句时未对用户输入做过滤。攻击者提交一段精心构造的参数,可能读取数据库中的账号密码、用户资料甚至整个数据库。XSS跨站脚本则更偏向于窃取管理员cookie,攻击者拿到管理员会话后,可以冒充后台操作,上传后门或修改页面。开发时要使用参数化查询或预处理语句,对输出内容进行编码。上线前至少用扫描工具做一遍基础检查,修补明显的注入和XSS问题。安全校验不能只放在前端,后端才是真正必须守住的最后一道防线。
四、服务器权限和目录配置太宽松:进来了就能横向走动
有些服务器为省事把网站目录设置成777,任意用户都可读写。攻击者即便只拿到一个低权限入口,也能修改网站文件,写入后门甚至控制整个站点。数据库使用root且允许远程访问,phpMyAdmin暴露在公网且使用弱口令,等于把数据库管理页面直接挂在门外。后台路径使用默认地址,攻击者不用费劲寻找目标。目录浏览未关闭时,整站文件结构一览无余,可能泄露备份压缩包、配置文件、源码等敏感信息。
合理的权限设置应当遵循最小化原则。网站运行账户只保留必要权限,目录一般设置为755,文件设置为644,只有需要写入的目录如cache、uploads可以适当放宽,但不应直接给777。数据库账号只授予当前网站库的权限,不开放远程root登录。phpMyAdmin如确实需要在线管理,应更换访问路径、绑定指定IP或通过SSH隧道访问。关闭目录浏览,隐藏或修改后台路径,并对配置文件、日志目录做访问阻断,这些基础动作能显著缩小攻击面。
五、备份与源码泄露:自己把源码打包送人
不少站长习惯在网站根目录放backup.zip、wwwroot.rar、db.sql等备份文件,扫描器专门探测这些常见文件名。一旦被下载,数据库配置、后台密码哈希、源码逻辑全部暴露。Git或SVN目录没有删除时,攻击者可以通过/.git/config等路径还原完整源码。编辑器生成的临时文件、phpinfo页面、错误日志也可能泄露绝对路径和敏感信息,给后续入侵提供便利。
备份文件必须放在网站根目录之外,最好放在无法通过URL访问的目录,并定期加密转移。不要使用容易猜到的文件名,也不要在服务器上长期保留多余副本。源码版本库不要直接部署在生产环境的网站目录下。phpinfo.php、test.php这类调试文件,上线前应全部删除。日志定期清理,错误信息不要直接展示给访问者,避免泄露框架版本和目录结构。
六、被黑一次后没清干净,后门让攻击者反复来
很多网站反复被黑,是因为第一次清理时只恢复了首页或删除了明显的木马文件,没有找到隐藏的后门。攻击者拿到权限后通常会植入多个webshell,有的藏在图片目录、缓存文件、模板文件里,有的修改数据库中的页面内容加入恶意JS,还有的创建了隐藏管理员账号或计划任务。只要有一个后门没清掉,修好之后很快又会被重新入侵。很多站长误以为换个密码、恢复备份就够了,结果没过几天又被挂上赌博链接。
彻底清理需要检查最近修改过的文件,用安全工具扫描webshell特征,对比原始代码和备份,查看数据库中有没有异常记录,检查服务器计划任务和自启动项。所有后台账号、FTP账号、数据库密码、API密钥必须全部更换。如果源头漏洞没有修复,清理后依然会再次被打穿。更稳妥的做法是保留数据,重新部署干净程序,再导入内容和附件,同时确认上传目录中没有可执行文件。只有把后门和漏洞同时处理,才能解决反复被黑的问题。
七、常见风险检查清单
下面把最容易忽略的风险点整理成表格,可以对照自己的网站逐项检查。安全加固不一定需要复杂工具,关键是把这些基础项落实到位。
| 检查项 | 常见风险 | 加固建议 |
|---|---|---|
| 后台登录口令 | 弱密码、默认账号、多站同密 | 使用12位以上混合密码,开启双因素,限制失败次数 |
| 程序和插件版本 | 长期不更新,漏洞公开后被批量利用 | 开启自动更新,定期检查,删除闲置插件 |
| 上传功能 | 伪造扩展名上传木马,上传目录执行PHP | 后端严格校验,上传目录禁用脚本执行 |
| 数据库权限 | 使用root远程访问,弱口令 | 最小权限账号,关闭远程root,只放行内网 |
| 备份文件 | 根目录存放压缩包,可被直接下载 | 移到Web根目录外,使用非猜测文件名 |
| 后台地址 | 默认路径暴露,容易触发爆破 | 修改后台路径或限制访问IP |
| HTTPS部署 | 登录时明文传输,被劫持获取密码 | 全站启用HTTPS,配置HSTS |
| 日志与监控 | 长期不看日志,被入侵后无感知 | 定期查看异常访问,设置文件改动告警 |
表格里的每一项都值得定期做一次检查。网站安全不是等出了问题才去补救,而是要把这些习惯融入日常维护中。把入口收紧、补丁及时打、权限控制好,攻击者看到这样的站点自然会放弃,转去找更容易下手的目标。