V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Mr0C
V2EX  ›  程序员

2021 年为啥还有公司前端使用 SQL 拼接参数

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

    后端表示参数拼接成 SQL 接收,真的服了,就不怕 SQL 注入吗

    36 条回复    2021-05-01 01:10:08 +08:00
    jack778
        1
    jack778  
       270 天前   ❤️ 1
    复制黏贴,能跑就行
    buffzty
        2
    buffzty  
       270 天前
    2021 年了为啥还有程序员天天编程写 bug 啊?
    Mr0C
        3
    Mr0C  
    OP
       270 天前
    常见的安全问题都不 care 吗
    jk1030
        4
    jk1030  
       270 天前   ❤️ 3
    2B 的产品有时候 sql 拼接参数是 feature
    PDX
        5
    PDX  
       270 天前
    你去看看事业单位用的办公系统
    statement
        6
    statement  
       270 天前 via iPhone
    后端校验啊。 前端只有约定好格式就行。和前端有什么关系。 你只要约定好 前端 delete 。后端当 select 用也行啊
    watcher
        7
    watcher  
       270 天前
    sql 作为描述语言,谁规定一定就是用来操作数据库的?用来操作搜索引擎不可以吗?
    panda666
        8
    panda666  
       270 天前
    sql 和前端有毛的关系
    mengdodo
        9
    mengdodo  
       270 天前
    @panda666 还真有,那个前两年兴起的前端 sql 技术,后端只需要约定接口通往数据层的表模型,前端自己调 sql 读写,我忘记叫什么了。 我一直觉得不靠谱……
    zjsxwc
        10
    zjsxwc  
       270 天前
    我记得 老项目 CS 架构的 都是 直接客户端传 SQL,
    服务端搞个 sql parser 就知道这条客户端提交的 sql 是否有权限。
    no1xsyzy
        11
    no1xsyzy  
       270 天前
    https://data.stackexchange.com/
    https://www.opendota.com/explorer
    不怕注入吗?

    @mengdodo 这也不是前端,这是 API 。同样一个 HTTP API,另一个后端程序也可以调用。
    前端是 UI 到 API 中间的东西(不管它的技术手段是啥)
    KouShuiYu
        12
    KouShuiYu  
       270 天前
    https://carto.com/
    这个公司为每个用户新建一个数据库
    bthulu
        13
    bthulu  
       270 天前
    怕什么注入, 法院重拳出击就行了
    darknoll
        14
    darknoll  
       270 天前
    这能怪前端??你后端干嘛吃的
    yaphets666
        15
    yaphets666  
       270 天前
    现在有种东西叫 graphql,类似
    opengps
        16
    opengps  
       270 天前   ❤️ 2
    能这么做的项目显然确实没啥用户量,甚至说是自己给自己用。对于注入这种事,小公司不遇到是不会去防的
    Cbdy
        17
    Cbdy  
       270 天前 via Android
    老板:又不是不能用
    phobal
        18
    phobal  
       269 天前 via iPhone
    @mengdodo 你是想说 graphQL 么,这个可跟直接拼 SQL 不一样哦
    ijrou
        19
    ijrou  
       269 天前
    老板:能用为啥还这么讲究?
    mypchas6fans
        20
    mypchas6fans  
       269 天前
    告诉各位我曾经呆过的某公司,近两年做的一个模块,名曰 xxx risk analysis,
    卖点是分析业务相关的指标和风险点,具体怎么做的呢?
    业务人员默认准备了一堆 SQL,可以根据需要在页面上微调,然后发到后端执行,结果再存到特定表里,前端做成报表,给客户大佬看……

    实际上就是个 xxx sql analysis……
    Trim21
        21
    Trim21  
       269 天前 via Android
    @yaphets666 grqphql 也有占位符和参数…
    Mac
        22
    Mac  
       269 天前
    @PDX #5 人家跑局域网的
    unco020511
        23
    unco020511  
       269 天前
    领导:又不是不能用
    3dwelcome
        24
    3dwelcome  
       269 天前
    我以前也想过这问题,为什么前端写 SQL ?因为代码改起来方便,开发速度快啊。

    当初的设想是,开发阶段前端写明文 SQL,发布阶段把 SQL 全部都用 hash 替代,然后后端校验 hash 有效性,再根据前端的 HASH,来还原明文 SQL 语句,并阻止未授权的 SQL 运行。

    这样既保证了开发效率,又保证了安全性。
    lagoon
        25
    lagoon  
       269 天前
    http,直接明文传输各种数据,都见怪不怪了。
    djs
        26
    djs  
       269 天前
    @mengdodo #9 graphql 吧,那个跟这不是一回事呀
    KyonLi
        27
    KyonLi  
       269 天前 via iPhone
    对对对,就是前端求着后端自己来写 sql 的
    evilStart
        28
    evilStart  
       269 天前 via Android
    @3dwelcome hash 之后还咋还原??
    3dwelcome
        29
    3dwelcome  
       269 天前
    @evilStart 不需要还原,后端的 hash 白名单而已。开发明文阶段,后端每条语句都有缓存明文和对应 hash 值的。
    生产环境只是简单查个表。
    chanchan
        30
    chanchan  
       269 天前
    这不是我上家吗 哈哈
    codingKingKong
        31
    codingKingKong  
       269 天前
    看使用范围, 如果是内部应用, 所有人拥有所有表操作权限, 或者就是个面馆管理系统, 恰好老板会点 sql, 也不是不行
    要是还需要控制权限呢, 就考虑查之前做一下鉴权
    要是还需要审计呢, 就考虑一下再加上 log
    要是还需要公开使用呢...考虑一下再加上敏感字段加密, sql 防注入...不过公网公开的这种接口, 我还没遇到也就是了
    passerbytiny
        32
    passerbytiny  
       269 天前 via Android
    @3dwelcome 用名单管理 sql,我敢保证想出这点子的人不是干活——包括但不限于编码、测试、评审——的。玩呢,这干活时间那不是翻倍,是翻几番。
    passerbytiny
        33
    passerbytiny  
       269 天前 via Android
    为啥还有公司前端使用 SQL 拼接参数?简单来说,懒。深入一点可能是:甲方,或者更可能是乙方老板,压根就没打算做能用的东西。
    lajunnow888
        34
    lajunnow888  
       268 天前
    一句话,又不是不能用
    slgz
        35
    slgz  
       268 天前
    @mengdodo #9 你说的应该是 graphql 这个吧
    ZhaoHuiLiu
        36
    ZhaoHuiLiu  
       268 天前
    都是拿钱做事,安全这东西,得负责人懂程序,不然大家都是玩玩。。。
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3127 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 04:27 · PVG 12:27 · LAX 20:27 · JFK 23:27
    ♥ Do have faith in what you're doing.