为啥不用参数?老项目改起来麻烦。
查询语句原本拼接前后都有单引号的前提下。全局过滤单引号,可行不?
1
opengps 2020-09-10 18:05:05 +08:00
直接替换不大行,因为损害了用户输入字符(如果用户输入单引号,你给他清空吗?)
你可以在入参部分,进行全局替换单引号为两个单引号(第一个标识注释,第二个表示用户字符)。其实这么做挺麻烦,因为程序涉及到输入的地方,每一步都得替换 |
2
eviladan0s 2020-09-10 21:40:44 +08:00
替换或者过滤清除其实都有风险,安全上太多类似案例了,如果你要搞可以把过滤函数发出来大家帮你审审
|
3
greatbody 2020-09-10 22:01:29 +08:00
老项目考虑下渐进式的重构。
UT 覆盖上,然后重构。 |
6
zarte OP @eviladan0s
``` foreach (string sqlKey in patten2) { if (_sWord.IndexOf(sqlKey) >= 0) { //只要存在一个可能出现 Sql 注入的参数,则直接退出 result = true; break; } } ``` |