2022年夏天,我接到一个任务,要对一家初创公司的php代码进行审计。那是一个下午,我坐在电脑前,逐行检查着他们的代码库。突然,我看到了一段代码,它像是一只孤岛上的小木屋,孤零零地躺在函数体里,没有经过任何参数化处理。
等等,这个函数似乎每次调用都硬编码了一个数据库的用户名和密码。我查了一下代码提交记录,发现这段代码是两年前写的。那个下午,我花了大约一小时,分析了那段代码,发现它暴露了整个网站的安全漏洞。
具体来说,这段代码在数据库连接时直接使用了明文密码,而且数据库的用户权限过大,可以访问整个数据库。我立即提出了修改建议,并在一周内帮助他们完成了修复。
现在回想起来,这个小小的漏洞如果被恶意利用,可能会导致公司数据泄露。细节决定成败,即使是看似微不足道的代码细节,也可能隐藏着巨大的风险。等等,还有个事,我突然想到,是不是应该定期对公司的代码进行安全检查呢?
审计发现:某企业10年前项目,php文件中存在SQL注入漏洞,导致数据泄露。 结果:修复漏洞,避免5000条客户数据被窃取。
这就是坑:直接拼接用户输入到SQL语句。
别信:不使用预编译语句。
别这么干:总用eval()解析变量。