在 MySQLi 上使用 bind_param() 时,是否需要转义数据以防止 SQL 注入?
正如标题所说,使用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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
不,在绑定参数时,您不需要转义数据来防止 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.
不。
引用此
http://mysql.lamphost.net/ tech-resources/articles/4.1/prepared-statements.html
No.
To quote this
http://mysql.lamphost.net/tech-resources/articles/4.1/prepared-statements.html