记一次防止SQL注入引起的生产问题

记一次防止SQL注入引起的生产问题
最近在生产系统上遇到了一个问题.
在前后端代码都没有修改的情况下,某个用@RequestBody ADTO接受请求参数的接口,突然报错了
错误信息大概是说,入参xxxupdateXXX,在 ADTO中找不到对应的属性.
ADTO中有属性xxxUpdateXXX,就是差了一个大写一个小写.
但是抓包看前端的入参,确实是xxxUpdateDate但是到了请求里面,不知道怎么变成小写的了.
然后听另外一个同事说,她那边也有select从大写被替换成小写的问题.
才反应过来,两个都是sql关键字,那么应该是在SQL处理的环节出现了问题,
咨询了同事,才知道最新系统为了防止SQL注入,对请求入参中的所有包含有SQL关键字的地方,都做了处理,但是他们的方案是有问题的,是简单粗暴的对所有请求入参中的所有字符串,都做了替换.
所以导致了我们这个问题.

这个问题其实应该更好排除出来.还是思维方式不够正确,没有遵循我们之前的排除问题的分析方法

从问题的原因入手:分析字段得知,只有Update字段,会被修改成update,而其他的字母有大写也没有被替换.
所以得出第一个结论
1.只对Update字段做了变小写处理
2.从Update中应该得知,update是属于SQL关键字.问题应该出现在SQL相关配置中.
3.从前端入参正确,后端接受改变,应该能推导出来,是后端某个拦截器之类的,对入参做了Update的处理,所以就应该是SQL注入过滤器等.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值