- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
使用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/
我正在尝试使用准备语句制作登录表单,但代码包含在我的sql中,字段中只有零,这是我的代码,谢谢您帮助我! $con=mysqli_connect('localhost','mupcku', '123'
您好,我需要将已经运行的查询更改为准备好的语句。我只是不知道如何正确使用 mysqli_stmt_bind_param(); 。我准备好的声明是... $query = "SELECT users.u
我试过这个功能,它有效: $stmt=mysqli_stmt_init($con); if (mysqli_stmt_prepare($stmt,"INSERT INTO `files
据我所知,mysqli_real_escape_string 不如准备好的语句安全,因此我正在进行切换。 然而,我在最简单的代码中遇到了一个小问题。 我期望执行的查询是 SELECT * from f
我正在尝试将数据插入我的 MySQL 数据库。我得到的只是一个空白页面,没有错误。 我的index.php: Username Password
使用prepared statements和mysqli_stmt_bind_param是否还有注入(inject)风险? 例如: $malicious_input = 'bob"; drop tab
我正在使用 mysqli_stmt_bind_param() 创建一个 INSERT 语句。出于某种原因,我收到一个错误。我使用 mysqli_error() 来查看错误消息,但它并不是特别有用。 有
这个问题已经有答案了: Mysqli throws "Warning: mysqli_stmt_bind_param() expects parameter 1 to be mysqli_stmt,
我正在开发一个 php 应用程序,我尝试并成功使用带有该功能的 mysqli : function executeUpdateInsert($SQLStatement, $SQLBindString,
我有一个数据库表,其中包含一个无符号整数字段来存储访问者的 IP 地址: `user_ip` INT(10) UNSIGNED DEFAULT NULL, 这是试图存储 IP 地址的 PHP 代码片段
我正在尝试使用此方法将参数绑定(bind)到它们的特定类型: mysqli_stmt_bind_param(mysqli_stmt stmt, string types, mixed &var1 [,
我认为这是一个非常简单的查询: $qry="SELECT taglink, tagtitle, tagshow FROM taglist_main WHERE tag = ?"; if ($stmt
这个问题已经有答案了: What to do with mysqli problems? Errors like mysqli_fetch_array(): Argument #1 must be o
这是插入行的简单代码。它在 php 5.6 中运行良好,但在 php 7.0.9 中我得到错误:“参数 3 to mysqli_stmt_bind_param() expected to be a r
这个问题在这里已经有了答案: What to do with mysqli problems? Errors like mysqli_fetch_array(): Argument #1 must
我正在使用 codeigniter,下面的代码已经工作了很长时间,直到我的服务器更新到 PHP 5.4。我的要求是允许上传大型文件并将它们作为 blob 保存在 mysql 数据库中。我无法存储链接引
这个问题已经有答案了: What to do with mysqli problems? Errors like mysqli_fetch_array(): Argument #1 must be o
这个问题在这里已经有了答案: What to do with mysqli problems? Errors like mysqli_fetch_array(): Argument #1 must
我是一名优秀的程序员,十分优秀!