我目前正在使用
mysqli
PHP扩展.
传统上我使用MysqLi_real_escape_string来逃避用户输入.但是,我正在考虑更改代码(希望尽可能少的步骤)来使用预准备语句.
我想明确这一点 – 假设我使用预处理语句来绑定我的所有变量,我可以确信sql注入是不可能的吗? (并完全免除MysqLi_real_escape_string?)
谢谢
如果正确绑定所有变量,可以大大降低
sql注入的风险.如果您动态创建
sql,仍然可以
获取sql注入,例如:
'SELECT * FROM ' . $tablename . ' WHERE id = ?'
但如果你避免这样的事情,你就不会有问题.