H5W3
当前位置:H5W3 > 问答 > 正文

web后台防sql注入的困惑

最近安全组的同事给我们提了一个sql注入的高危漏洞,
跟同事一起看了代码,发现对于前段传入进来的字符串参数未做严格的合法性检测,
于是我们开始动手修复这个漏洞,然后就产生了分歧,

同事认为,对前段所有的字符串类型的参数都做检测,且他写的检测逻辑非常严格,如下:
1.根据项目需要仅支持部分特殊字符,2.通过正则表达式匹配是否包含所有的mysql关键字,如果包含则认为该参数不合法。

我觉得仅针对要拼接到sql语句中的字符串类型参数做检查就好了,为什么要检查所有的字符串类型参数?

请问各位大神,我的同事的做法是否不太合理呢?你们是怎样在代码中防御sql注入的呢?

谢谢!

回答

直接参数化防止sql注入,问题的描述可以拆分成两点看待,一个是从业务上验证参数的合法性,一个是防止sql注入。.Net框架提供模型校验,属性如[Required]、[ RegularExpression]的设计都是满足业务需求上的验证的,防sql注入是系统框架安全需求。实际业务中很大可能存在符合业务参数的需求但是作为字符串拼接sql时异常的场景,比如客户提交的参数中包含富文本内容。

未经允许不得转载:H5W3 » web后台防sql注入的困惑

赞 (0)

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址