手贱在配置文件里写死了数据库密码,我现在想把键盘吃了...

我真的服了,你们知道那种早上起来打开网站看到一个纯白页面或者满屏的“Error establishing a database connection”是什么感觉吗?血压直接拉满!就因为我他妈图省事,把数据库连接的配置信息像写日记一样直接怼在了那个万能的 config.php 文件里,用的是最经典的 localhost 加 root 加 123456 这死亡三件套。

然后那个平静的周二下午,我正美滋滋看着刚有点起色的自然流量(甚至幻想下个月能不能接个小广告),服务器突然给我发了十几封报警邮件——CPU占用100%,数据库进程挂了又起起了又挂。我赶紧连SSH,一看日志,全是未知IP在疯狂尝试连接我的MySQL端口还他妈成功了!你知道最恐怖的是什么吗?不是网站打不开,是你发现后台的用户表被清空了,订单表后面被加了个莫名其妙的字段,首页还被插了一段恶心的菠菜跳转代码。我当时脑子就嗡的一声,真的,盯着那行被插入的恶意代码,抽了三根烟才冷静下来想是不是该直接格盘。

所以兄弟们,听我一句劝,数据库连接这玩意儿是地基,地基烂了你前面什么TDK优化、什么原创内容、什么外链建设全是空中楼阁,算法还没来K你,黑客先给你扬了。别学我!

我的血泪经验就这几条,记住了能保命
1. 永远不要用 root 账号!给你的网站程序单独创建一个用户,只授予它那个特定数据库的增删改查权限,权限要给到最小化,这样就算被爆了损失也能控制。
2. 密码别用123456!用强密码,大小写数字符号混编,长得连你自己都记不住那种,丢到密码管理器里。
3. 连接信息别硬编码!别直接把主机名、用户名、密码、数据库名写在你的PHP/Java/Python代码文件里。用环境变量(.env文件),然后用代码去读取,并且千万记得把 .env 文件加入 .gitignore,别他妈提交到代码仓库让全世界围观你的密码!
4. 主机地址别傻乎乎一直用 localhost,根据你PHP和MySQL的实际位置来,同服务器用 127.0.0.1 有时更靠谱。
5. 用PDO或者MySQLi,别再用那个古老的 mysql_ 扩展了,不但过时了而且安全性是渣。
6. 改掉默认的MySQL端口(3306),能挡掉一部分无差别扫描的脚本小子。
7. 定期备份!定期备份!定期备份! 说三遍,我用血换来的教训。数据库和网站文件分开备份,扔到另一个安全的地方。

最后,如果你刚起步或者怕麻烦,甚至可以直接用那些成熟CMS自带的安装程序,或者一些托管平台,它们通常帮你把这些脏活累活干了。不然你就得像我一样,对着空空如也的用户表发一晚上呆这里有份我后来整理的保命检查清单,唉,不说了,说多了都是泪,我去检查今天的备份了。

相关推荐