V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
牛客网
zarte
V2EX  ›  问与答

关于 sql 防注入问题

  •  
  •   zarte · 49 天前 · 570 次点击
    这是一个创建于 49 天前的主题,其中的信息可能已经有所发展或是发生改变。

    为啥不用参数?老项目改起来麻烦。
    查询语句原本拼接前后都有单引号的前提下。全局过滤单引号,可行不?

    6 条回复    2020-09-11 09:39:46 +08:00
    opengps
        1
    opengps   49 天前
    直接替换不大行,因为损害了用户输入字符(如果用户输入单引号,你给他清空吗?)
    你可以在入参部分,进行全局替换单引号为两个单引号(第一个标识注释,第二个表示用户字符)。其实这么做挺麻烦,因为程序涉及到输入的地方,每一步都得替换
    eviladan0s
        2
    eviladan0s   49 天前
    替换或者过滤清除其实都有风险,安全上太多类似案例了,如果你要搞可以把过滤函数发出来大家帮你审审
    greatbody
        3
    greatbody   49 天前
    老项目考虑下渐进式的重构。
    UT 覆盖上,然后重构。
    zarte
        4
    zarte   49 天前
    @greatbody 重构是不可能重构的
    zarte
        5
    zarte   49 天前
    @opengps 只考虑防注入效果,其他的小问题。
    zarte
        6
    zarte   49 天前
    @eviladan0s
    ```
    foreach (string sqlKey in patten2)
    {
    if (_sWord.IndexOf(sqlKey) >= 0)
    {
    //只要存在一个可能出现 Sql 注入的参数,则直接退出
    result = true;
    break;
    }
    }
    ```
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3482 人在线   最高记录 5168   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 15ms · UTC 04:52 · PVG 12:52 · LAX 21:52 · JFK 00:52
    ♥ Do have faith in what you're doing.