凌晨三点,防止我盯着屏幕上跳出的网站赌博广告,意识到自己刚写完的被劫行业分析报告被劫持了。那篇文章里每个关键词都链向境外色情站,防止页面底部还挂着“澳门首家线上赌场”的网站浮窗。这不是被劫个例——你的网站可能正在被悄无声息地改造成别人的赚钱工具。
劫持的防止本质是争夺控制权。攻击者要么拿到了你服务器的网站密码,要么在你网站代码里埋了后门,被劫要么直接劫持了用户访问时的防止DNS解析。我见过最蠢的网站案例,是被劫某公司把FTP密码写在桌面TXT文件里,黑客扫到后像逛自家后院一样改了首页。防止也见过最狡猾的网站手法,对方在网页里插入一段肉眼不可见的被劫iframe,只在特定IP段触发跳转,管理员自己访问时永远看不出异常。
第一道防线是掐断入口。别用弱密码,别用默认端口,别让FTP裸奔在公网上——用SFTP或SSH密钥登录,把22端口改成非标准号。这没法防住专业黑客,但能挡住99%的扫描器。真正重要的是文件监控。装个Tripwire或OSSEC,对网站目录的哈希值做快照,任何文件变动都会触发告警。我认识一位站长,他的网站被植入挖矿脚本三个月都没发现,直到服务器账单暴涨才察觉。如果当时有文件完整性校验,脚本落地的那一秒就该收到短信了。
代码层面更要较真。SQL注入是劫持的老祖宗,现在依然横行。你写查询语句时用预处理参数了吗?输出到页面的用户内容做转义了吗?很多被劫持的站,根源就是某个留言板插件没过滤富文本,被塞进了