在 MySQLi 上使用 bind_param() 时,是否需要转义数据以防止 SQL 注入?

发布于 2024-12-04 10:55:39 字数 62 浏览 1 评论 0原文

正如标题所说,使用bind_param()时我是否必须转义用户输入,还是在内部完成的?

谢谢。

As the title says, do I have to escape user input when using bind_param() or is that done internally?

Thank you.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

强辩 2024-12-11 10:55:39

不,在绑定参数时,您不需要转义数据来防止 SQL 注入。

但这并不能免除您验证所述数据的责任。

绑定参数时,不会执行转义(内部或其他方式)。 SQL 语句是使用参数占位符准备的,并且这些占位符的值在执行时传递。

数据库知道参数是什么并相应地处理它们,而不是 SQL 值插值。

No, you do not need to escape data to protect against SQL injection when binding parameters.

This does not absolve you from validating said data though.

When binding parameters, there is no escaping performed (internally or otherwise). An SQL statement is prepared with parameter placeholders and values for these are passed at execution time.

The database knows what parameters are and treats them accordingly as opposed to SQL value interpolation.

执笏见 2024-12-11 10:55:39

不。

引用此

http://mysql.lamphost.net/ tech-resources/articles/4.1/prepared-statements.html

“通常,当您处理临时查询时,您需要
处理从用户那里收到的数据时要非常小心。
这需要使用可以避免所有必要麻烦的函数
字符,例如单引号、双引号和反斜杠
人物。在处理准备好的语句时这是不必要的。
数据的分离允许MySQL自动考虑
考虑这些字符,并且不需要使用任何转义
特殊功能
。”

No.

To quote this

http://mysql.lamphost.net/tech-resources/articles/4.1/prepared-statements.html

"Normally when you are dealing with an ad hoc query, you need to be
very careful when handling the data that you received from the user.
This entails using functions that escape all of the necessary trouble
characters, such as the single quote, double quote, and backslash
characters. This is unnecessary when dealing with prepared statements.
The separation of the data allows MySQL to automatically take into
account these characters and they do not need to be escaped using any
special function
."

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文