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

2024-02-04 00:22:30 +08:00
 huahsiung

程序:web 程序

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

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

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


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

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

4677 次点击
所在节点    信息安全
17 条回复
0o0O0o0O0o
2024-02-04 00:33:16 +08:00
反面例子搜 orm injection 就行
pocarisweat
2024-02-04 00:56:41 +08:00
用不用 ORM 都可以避免 SQL 注入,预编译 API 也挺简单的
MrKrabs
2024-02-04 04:25:21 +08:00
框架也会有 bug 嘛。。。
kkk9
2024-02-04 05:43:23 +08:00
参数值类型强验证避免 80%,sql 预编译避免 19%,上个商业 waf 增加 0.99999999%😉
saveai
2024-02-04 09:01:35 +08:00
@kkk9 有个开源的叫雷池咋样
https://github.com/chaitin/SafeLine
gam2046
2024-02-04 09:13:32 +08:00
ORM 最后用的也是参数化查询,所以只要你不自己手拼 SQL ,用不用 ORM ,基本上都不存在注入的情况。
Rache1
2024-02-04 09:20:08 +08:00
PHP 你用参数化也不麻烦啊,自己原因 SQL 拼接一把梭,那有啥办法,用了 ORM 也不能避免你拼接 SQL 一把梭啊
qq135449773
2024-02-04 09:49:37 +08:00
你非要手动拼接 sql 不用参数化模板那套东西,换上帝也救不了你的 SQL 注入问题
pytth
2024-02-04 09:53:22 +08:00
orm 解决的不是 sql 注入问题,更多的还是为了方便使用。
lyxxxh2
2024-02-04 09:54:51 +08:00
可以这么说,orm 让那些人写不出漏洞
除非是:wherRaw selectRaw... 那些 raw 原生。
oppoic
2024-02-04 09:55:55 +08:00
上云基本就没有了 sql 注入,到不了 orm 这层就被拦截了
wOuv7i4e7XxsSOR1
2024-02-04 10:03:33 +08:00
不管是不是 ORM ,只要使用 prepare 就没问题
layxy
2024-02-04 10:10:43 +08:00
使用 orm 给你提供了很多便利,这些便利可以极大的避免你因疏忽造成的 sql 注入,一般 orm 框架也提供你手写 sql,这种情况下你拼接 sql 就有可能有 sql 注入风险,所以尽量使用 orm 框架提供的能力和推荐的做法
4ra1n
2024-02-04 10:55:34 +08:00
例如 ORDER BY ? 是不能预编译的,当某些情况 SQL 复杂或者其他原因,必须手写 SQL 时,恰好遇到这种无法预编译的语句,就可以注入了
shuimugan
2024-02-04 16:13:58 +08:00
8355
2024-02-04 17:50:09 +08:00
orm 也看实现方案的,如果是用 pdo 参数绑定方案执行的是可以规避的,比如 laravel 和 thinkphp 的 orm 。
CCddf
2024-02-18 01:23:47 +08:00
二次注入

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1013951

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX