内行透底:PHP防注入,90%人漏的3层预编译屏障
|
昨儿跟部门新来的那小子改线上接口,他上来就给每个字段套了参数过滤,连预编译的PDO都没想起用。我盯着他的代码,指尖抠着键盘边缘,当时空调吹得后颈直发凉,桌上的外卖黄焖鸡已经凉透了,上面的土豆还硬得硌牙。
文章配图,仅供参考 他还振振有词说自己查了教程,说这么过滤就够了,反正之前写的老项目也这么用。我懒得跟他掰扯,拉他去测注入点。我原以为随便找个字符就能测出来,结果输了单引号,他的代码直接把报错信息吐到页面上了。那页面跳出的错误带了完整的SQL语句,连库名都给列出来了。我敢打包票,这要是被扫到,当天就能把整个库拖干净。那小子愣了两秒,转笔的手停了,笔杆“啪嗒”掉在键盘上,他才慌慌张张去改PDO。我没催他,盯着窗外飘的梧桐叶,那叶子挂在树枝上晃了三分钟,没风也没掉。 说到参数过滤那事,我之前踩过一次坑。去年接个外包项目,就是用参数过滤挡注入,上线不到一周就被拖了库,后来才发现有人用了宽字节注入绕过去了,参数过滤根本拦不住。我原以为后来换了预编译就稳了,结果还是没补上那层绑定参数的环节,上次又差点出事。 那小子改完代码,又重启了一遍服务,我去茶水间接水,听见他在跟旁边的实习生说,这预编译就是个花架子,只要参数过滤写得细,根本没必要用。我喝了一口凉掉的大麦茶,嘴里发苦,心里想着,这小子根本没碰过真正被拖库的项目,不知道那有多闹心。 后来我给他看之前拖库的日志,他翻了两眼就说,那是之前的人写得太烂了,跟预编译没关系。我懒得跟他争,反正说了他也不会信。旁边实习生递过来一颗薄荷糖,我接了,糖纸在手里捏得皱巴巴的,没拆开。 我之前问过几个同行,都说预编译只要开了就行,谁还会去检查参数绑定那一步。我手上没有统计数据,说不准到底有多少人漏了这一步,但我敢说,十个项目里至少有八个没做好。那小子现在还在说我小题大做,说线上这么久都没出事,没必要改。 今天早上来公司,电梯里遇见测试组的阿梅,她手里攥着个灌了热水的保温杯,杯盖松了,热水顺着指缝滴在电梯按钮上。我跟她打了个招呼,她“哎”了一声,说昨天测接口的时候,又出了个小bug,改了半天才弄好。我没搭话,心里想着,要是那小子早点把预编译的参数绑定做好,也不会有这些破事。 刚才那小子又过来问我,说他改好的代码能不能提交,我没看,直接点了提交。他转身走的时候,手里的手机响了,是个微信视频,他接了,对着屏幕那边晃了晃脑袋,说自己在公司加班呢。我盯着显示器上的代码,一行一行扫着,又看见那小子之前写的参数过滤的代码,虽然改了,但还是有漏洞,我也没再说什么,反正等线上出了问题,他就知道厉害了。 我原以为跟他说清楚预编译的三层屏障,他就能明白,结果他根本听不进去,觉得我是在没事找事。现在我也不管了,反正代码交上去了,要是出了事,他自己扛着,跟我没关系。我关上电脑,拿起桌上的背包,准备下班,走到电梯口的时候,听见身后传来那小子的喊叫声,说他的代码又出问题了。我没回头,按了电梯按钮,等着电梯上来,心里想着,这就是他应得的。 (编辑:站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |


PHP转新能源,半年12万,元数据人酸了
内行透底,2024 Laravel在PHP电商圈已失宠?
内行透底,PHP框架选型80%栽在MVC陷阱
PHP防注入?9年经验揭秘:3层防御90%人栽了
15年PHP老炮:API网关才是设备智能化的真命脉
运营中心PHP实时交互卡顿?3步优化立竿见影
PHP工程师私藏的12个冷门高效技术网站
