V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
huahsiung
V2EX  ?  信息安全

程序使用 ORM 框架是不是基本就可以解决 SQL 注入了?

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

    腾讯云最新优惠活动来了:云产品限时1折,云服务器低至88元/年 ,点击这里立即抢购:9i0i.cn/qcloud,更有2860元代金券免费领取,付款直接抵现金用,点击这里立即领取:9i0i.cn/qcloudquan

    (福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

    程序:web 程序

    类型:PHP ,web 漏洞王(原因:写起来快,简单)

    ORM 框架是使用的是 sql 预编译的。

    然后是不是一般就不用过滤输入请求的 sql 参数了。直接把参数送入 ORM 中查询就行了。


    不知道有没有没考虑到的。

    一般来说,sql 预编译基本是 100%解决 sql 注入的。不知道有没有反面例子?

    17 条回复  ?  2024-02-18 01:23:47 +08:00
    0o0O0o0O0o
        1
    0o0O0o0O0o  
       100 天前 via iPhone
    反面例子搜 orm injection 就行
    pocarisweat
        2
    pocarisweat  
       100 天前
    用不用 ORM 都可以避免 SQL 注入,预编译 API 也挺简单的
    MrKrabs
        3
    MrKrabs  
       100 天前
    框架也会有 bug 嘛。。。
    kkk9
        4
    kkk9  
       100 天前
    参数值类型强验证避免 80%,sql 预编译避免 19%,上个商业 waf 增加 0.99999999%?
    saveai
        5
    saveai  
       100 天前
    @kkk9 有个开源的叫雷池咋样
    https://github.com/chaitin/SafeLine
    gam2046
        6
    gam2046  
       100 天前
    ORM 最后用的也是参数化查询,所以只要你不自己手拼 SQL ,用不用 ORM ,基本上都不存在注入的情况。
    Rache1
        7
    Rache1  
       100 天前
    PHP 你用参数化也不麻烦啊,自己原因 SQL 拼接一把梭,那有啥办法,用了 ORM 也不能避免你拼接 SQL 一把梭啊
    qq135449773
        8
    qq135449773  
       100 天前
    你非要手动拼接 sql 不用参数化模板那套东西,换上帝也救不了你的 SQL 注入问题
    pytth
        9
    pytth  
       100 天前 via iPhone
    orm 解决的不是 sql 注入问题,更多的还是为了方便使用。
    lyxxxh2
        10
    lyxxxh2  
       99 天前
    可以这么说,orm 让那些人写不出漏洞
    除非是:wherRaw selectRaw... 那些 raw 原生。
    oppoic
        11
    oppoic  
       99 天前
    上云基本就没有了 sql 注入,到不了 orm 这层就被拦截了
    jdkxnktkdkxod
        12
    jdkxnktkdkxod  
       99 天前
    不管是不是 ORM ,只要使用 prepare 就没问题
    layxy
        13
    layxy  
       99 天前   ?? 2
    使用 orm 给你提供了很多便利,这些便利可以极大的避免你因疏忽造成的 sql 注入,一般 orm 框架也提供你手写 sql,这种情况下你拼接 sql 就有可能有 sql 注入风险,所以尽量使用 orm 框架提供的能力和推荐的做法
    4ra1n
        14
    4ra1n  
       99 天前
    例如 ORDER BY ? 是不能预编译的,当某些情况 SQL 复杂或者其他原因,必须手写 SQL 时,恰好遇到这种无法预编译的语句,就可以注入了
    8355
        16
    8355  
       99 天前
    orm 也看实现方案的,如果是用 pdo 参数绑定方案执行的是可以规避的,比如 laravel 和 thinkphp 的 orm 。
    CCddf
        17
    CCddf  
       86 天前
    二次注入
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   6511 人在线   最高记录 6547   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 01:53 · PVG 09:53 · LAX 18:53 · JFK 21:53
    Developed with CodeLauncher
    ? Do have faith in what you're doing.


    http://www.vxiaotou.com