没签合同网站做不好?5个注意事项帮你避坑救火
网站上线第二天突然挂满博彩广告,后台密码失效,用户投诉不断。这种“网站被黑挂马不知道怎么办”的紧急时刻,往往让新手站长手足无措。别慌,先别急着删库重装,冷静下来检查这3个核心注意事项:确认是否未签正规合同导致权责不清、排查服务器安全配置漏洞、核实备案信息与实际部署是否一致。很多纠纷的根源,就在于当初图省事没签合同,现在出了问题连追责对象都找不到。
需求分析:没签合同怎么界定“做不好”
很多老板觉得,网站做出来就行,签不签合同无所谓。大错特错。没签合同,意味着你对网站的功能边界、交付标准、维护责任全都没约定。当网站出现性能瓶颈或安全漏洞时,开发方可以说“这是你的服务器问题”,你可以说“他代码写得烂”,双方扯皮,网站继续裸奔。
核心痛点拆解:
- 功能缺失无据可查:你要求了“用户注册登录”,对方没做,你说他漏了,他说你没提。没合同,口说无凭。
- 安全责任归属模糊:网站被黑,是代码漏洞还是服务器被爆破?没合同里的SLA(服务等级协议),没人兜底。
- 后续维护无保障:今天修好,明天又崩。没约定免费维护期,每次修补都要加钱。
怎么破?补一份简易补充协议。 哪怕当初没签大合同,现在也能补签一份《网站维护与安全责任确认书》。重点写明:
- 当前网站状态快照:截图、代码版本、服务器IP。
- 责任划分:明确哪些是代码问题,哪些是运维问题。
- 补救措施:对方需在48小时内修复已知漏洞,否则扣除尾款。
老手提醒:别指望对方主动配合。如果对方失联,直接联系服务器提供商,通过IP地址反查对方身份,保留证据,必要时走法律途径。但在此之前,先把网站“止血”。
环境准备:紧急排查前的必备工具
在处理“网站被黑挂马”时,裸手操作等于二次感染。你必须准备一套独立的排查环境。别用你自己办公电脑直接连服务器,万一对方植入后门,你的电脑也可能中毒。
必备工具清单:
- Linux服务器:推荐CentOS 7或Ubuntu 20.04 LTS,最小化安装,只装Nginx/Apache和PHP/Node.js。
- 日志分析工具:
awk,grep,tail是基本功,装个fail2ban防暴力破解。 - 代码审计工具:
grep -r "eval" /var/www/html快速定位危险函数。 - 备份工具:
rsync或tar,确保你能随时回滚。
关键注意事项:
- 隔离生产环境:排查时,把网站静态文件从Web根目录移开,只留一个静态的“维护中”页面。这样黑客无法继续注入,你也有时间慢慢查。
- 修改所有密码:SSH密码、数据库密码、FTP密码、面板密码。全部改成高强度随机密码,不要用生日、手机号。
- 禁用高危端口:只开放80、443、22(或改为非标端口)。关闭3306、27017等数据库直接对外端口。
核心步骤:三步定位挂马源头
网站被黑,通常就三种情况:弱口令爆破、代码漏洞利用、供应链污染(比如用了被投毒的插件)。咱们一步步来,像剥洋葱一样找出真相。
第一步:检查访问日志,找出攻击者IP
登录服务器,查看Nginx或Apache的访问日志。重点看被黑时间点前后的请求。
# 查看最近1小时的Nginx访问日志,筛选状态码200且UA异常的请求
tail -n 1000 /var/log/nginx/access.log | grep -E "(Mozilla/4\.0|curl/|wget/)" | awk '{print $1}' | sort | uniq -c | sort -rn | head -20
解读结果:
如果某个IP出现频率极高,且User-Agent是 curl/7.x 或空字符串,大概率是扫描器或攻击脚本。记录这些IP,后续在防火墙中封禁。
第二步:排查Web目录,寻找异常文件
黑客注入的文件通常有这些特征:
- 文件名随机,如
a1b2c3.php,x.php。 - 包含
eval(),assert(),base64_decode()等危险函数。 - 文件修改时间与网站正常更新时间不符。
# 递归搜索 /var/www/html 目录下所有包含 eval 或 base64_decode 的 PHP 文件
grep -r "eval\|base64_decode" /var/www/html --include="*.php" -l
处理策略:
- 如果找到的文件是你自己写的代码,检查是否误用了危险函数。
- 如果是陌生文件,直接删除。但删除前,先备份一份到
/tmp/目录,以便分析攻击载荷。 - 注意:有些高级木马会修改
index.php或.htaccess文件,把正常文件重命名,用木马文件顶替。对比一下文件修改时间,能发现异常。
第三步:检查数据库,防止数据泄露
很多网站被黑,数据被拖库。检查数据库是否被插入恶意数据,如后台用户表被添加管理员账号。
-- 查看最近创建的用户(假设是 MySQL)
SELECT * FROM users ORDER BY created_at DESC LIMIT 10;
如果发现陌生账号,立即删除,并重置所有用户密码(强制用户重新登录)。同时,检查数据库是否有 SELECT 语句被注入,查看慢查询日志或审计日志。
代码/配置示例:加固Nginx与PHP
排查完漏洞,必须加固。否则,你修好的网站,下周还会被黑。以下是两段关键的加固配置,直接复制到你的服务器中。
1. Nginx 安全头配置
在 nginx.conf 的 server 块中添加以下内容,防止点击劫持、MIME类型嗅探等攻击。
server {listen 80;server_name yourdomain.com;root /var/www/html;index index.php;# 【关键】安全头配置,防止浏览器嗅探和点击劫持add_header X-Content-Type-Options "nosniff" always;add_header X-Frame-Options "SAMEORIGIN" always;add_header X-XSS-Protection "1; mode=block" always;add_header Referrer-Policy "no-referrer-when-downgrade" always;# 【关键】禁止访问隐藏文件,如 .git, .env, .htaccesslocation ~ /\. {deny all;}# 【关键】限制PHP文件只能从指定目录访问,防止目录穿越location ~ \.php$ {try_files $uri =404;fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;}
}
修改后务必执行 nginx -t 检查语法,再 nginx -s reload 重载配置。
2. PHP 禁用高危函数
编辑 php.ini 文件,禁用黑客常用的动态执行函数。
; 【关键】禁用高危函数,防止代码注入
disable_functions = exec,passthru,shell_exec,system,proc_open,popen,curl_exec,curl_multi_exec,parse_ini_file,show_source
注意:禁用这些函数后,如果你的网站依赖这些函数(如使用cURL调用第三方API),需要评估业务影响。对于大多数企业官网,禁用是安全的。修改后重启PHP-FPM:systemctl restart php-fpm。
常见报错:这些坑你肯定踩过
加固过程中,你可能会遇到这些报错,别慌,都是小问题。
| 报错信息 | 可能原因 | 解决方案 |
|---|---|---|
502 Bad Gateway |
PHP-FPM未启动或端口被占用 | systemctl status php-fpm 检查状态,netstat -tlnp \| grep 9000 检查端口 |
403 Forbidden |
目录权限错误或Nginx配置过严 | 检查 /var/www/html 权限,确保Nginx用户(如www-data)有读取权限 |
Function eval() is disabled |
代码中使用了被禁用的函数 | 重构代码,避免使用 eval,改用 call_user_func 或其他方式 |
Access denied for user 'root'@'localhost' |
数据库权限不足 | 用 mysql -u root -p 登录,执行 GRANT ALL PRIVILEGES ON *.* TO 'your_user'@'localhost'; |
特别提示:如果你用的是WordPress、ThinkPHP等框架,被黑的概率更高。建议直接升级框架到最新版本,删除所有未使用的插件和主题。很多漏洞都藏在老旧插件里。
小结:没签合同,更要懂技术自救
回到开头的问题:没签合同网站做不好,怎么办?
答案是:技术自救 + 法律威慑 + 流程规范。
- 技术自救:按本文步骤,隔离环境、排查日志、清理木马、加固配置。这是你唯一能完全掌控的部分。
- 法律威慑:保留所有攻击日志、IP地址、代码备份。如果损失巨大,向网安部门报案。没签合同不影响你追究侵权责任,只是合同责任更难主张。
- 流程规范:这次教训后,下次建站,务必签合同。合同里要明确:安全SLA、漏洞响应时间、免费维护期、数据归属。
记住:网站安全不是开发者的事,也不是运维的事,是你自己的事。没签合同,你就是自己的甲方、乙方、运维、安全官。别把鸡蛋放在一个篮子里,定期备份,定期扫描,定期更新。
你踩过哪些建站的坑?评论区交流,我帮你分析怎么避坑。