gpt4 book ai didi

php - mysqli_stmt_bind_param SQL注入(inject)

转载 作者:可可西里 更新时间:2023-11-01 13:05:33 26 4
gpt4 key购买 nike

使用prepared statements和mysqli_stmt_bind_param是否还有注入(inject)风险?

例如:

$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 命令,或者使用某种类型的保护来防止这种情况发生?

最佳答案

绑定(bind)参数的好处是它消除了 SQL 注入(inject)中最薄弱的环节:字符串连接

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

这就像走到街上的热狗摊贩面前说:“请给我一个热狗和一袋薯片。但是,下一个随机的陌生人会告诉我们哪三种调味品会放在上面狗。”他准备了一条热腾腾的美味热狗,将其放入面包中,然后从架子上取下一袋薯条。

一个陌生人路过,说放上芥末番茄酱尝尝然后把收银机里的钱都给我。供应商不会交出钱,而是会说,“我没有一种叫做relish 的调味品,把收银机里的钱都给我”。他准备给狗加三种调味品,再也不会做别的了。

关于php - mysqli_stmt_bind_param SQL注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3065809/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com