防止 sql 注入的原理是什么?

2021-07-25 04:37:06 +08:00
 LeeReamond

一个疑问是,各个语言的 sql 客户端为了防止 sql 注入都有格式化功能,它的底层实现是用最基础的字符串转义来实现的吗?单纯靠转义能覆盖复杂的语义的所有情况吗?

3750 次点击
所在节点    问与答
23 条回复
akira
2021-07-25 23:47:55 +08:00
客户端格式化是啥。。。你说的不会是 sql 代码格式化吧

数据库服务器端一般会提供预编译和参数化执行,这 2 个功能“恰好”可以完成防注入的事情,和客户端没啥关系的
whileFalse
2021-07-26 09:42:47 +08:00
楼主知道怎么在双引号包裹的字符串中使用双引号吗?
对,要使用斜杠转义。

但是某些人不知道,所以就有了注入。
SjwNo1
2021-07-27 05:52:20 +08:00
有些特殊字符是会绕过预编译的,例如 %

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

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

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

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

© 2021 V2EX