未分類 17 9 月 2020 关于 sql 防注入问题 关于 sql 防注入问题 資深大佬 : zarte 4 为啥不用参数?老项目改起来麻烦。 查询语句原本拼接前后都有单引号的前提下。全局过滤单引号,可行不? 大佬有話說 (6) 資深大佬 : opengps 直接替换不大行,因为损害了用户输入字符(如果用户输入单引号,你给他清空吗?)你可以在入参部分,进行全局替换单引号为两个单引号(第一个标识注释,第二个表示用户字符)。其实这么做挺麻烦,因为程序涉及到输入的地方,每一步都得替换 資深大佬 : eviladan0s 替换或者过滤清除其实都有风险,安全上太多类似案例了,如果你要搞可以把过滤函数发出来大家帮你审审 資深大佬 : greatbody 老项目考虑下渐进式的重构。UT 覆盖上,然后重构。 主 資深大佬 : zarte @greatbody 重构是不可能重构的 主 資深大佬 : zarte @opengps 只考虑防注入效果,其他的小问题。 主 資深大佬 : zarte @eviladan0s “` foreach (string sqlKey in patten2) { if (_sWord.IndexOf(sqlKey) >= 0) { //只要存在一个可能出现 Sql 注入的参数,则直接退出 result = true; break; } }“`