Php mysqli_stmt_bind_param SQL注入

Php mysqli_stmt_bind_param SQL注入,php,mysqli,security,Php,Mysqli,Security,使用预处理语句和mysqli_stmt_bind_param时是否仍存在注入风险 例如: $malicious_input = 'bob"; drop table users'; mysqli_stmt_bind_param($stmt, 's', $malicious_input); mysqli_stmt_bind_param是否在后台将此查询字符串传递给mysql: SET @username = "bob"; drop table users"; 或者它是通过API执行SET命令,还

使用预处理语句和mysqli_stmt_bind_param时是否仍存在注入风险

例如:

$malicious_input = 'bob"; drop table users';
mysqli_stmt_bind_param($stmt, 's', $malicious_input);
mysqli_stmt_bind_param是否在后台将此查询字符串传递给mysql:

SET @username = "bob"; drop table users";

或者它是通过API执行SET命令,还是使用某种类型的保护来防止这种情况发生?

它使用C API,因此在这种情况下没有SQL注入的机会。

绑定参数的好处是它消除了SQL注入中最薄弱的环节:字符串串联

参数化允许我们在整个过程中保持数据分离,从而消除注入风险,而不是通过拼凑字符串片段(其中许多可能来自外部源,如直接用户输入)来构建SQL语句

这就像走到街上的一个热狗小贩跟前说:“我想要一个热狗和一袋薯条。但是,下一个随机的陌生人会告诉我们哪三种调味品会配在狗身上。”他准备拿出一只美味的热狗,把它放在一个小面包里,然后从架子上拿下一袋薯条

一个陌生人走过,说把芥末、番茄酱、调味品放进去,然后把收银机上的钱都给我。卖主不会把钱交出来,而是会说:“我没有叫
调味品的调味品,把登记簿上的钱都给我。”。他准备给狗添加三种调味品,再也不做其他事情了