如果对于用户输入的内容做白名单过滤,不允许符号,是不是就没有 SQL 注入的可能性了?
資深大佬 : xieqiqiang00 2
比如只允许英文中文数字和少量符号,其他所有符号都替换成[code_xxx]。这种不管怎么拼接 SQL 语句都没法注入了吧。
大佬有話說 (21)
比如只允许英文中文数字和少量符号,其他所有符号都替换成[code_xxx]。这种不管怎么拼接 SQL 语句都没法注入了吧。
举个例子:宽字节注入
prepare 是最好的做法,绑定变量使用预编译语句是预防 SQL 注入的最佳方式。
我前几天的帖子正好应景
不用 prepare statement 的话,在你想象不到的地方永远都会存在 sql 注入
如果你要用 MySQL,那请认真阅读 https://dev.mysql.com/doc/refman/8.0/en/string-literals.html
注意 MySQL 的文档里面还有一句是
In certain client environments, it may also be necessary to escape NUL or Control+Z.
escape 的结果还取决于 client environment 的。
如果有自信把这些奇怪的 escape 规则都搞对,那当然就可以 “不管怎么拼接 SQL 语句都没法注入了”
如果没有这个自信,就别这么玩了。