PHP SQL注入将动态变量绑定到UPDATE语句中

时间:2018-10-22 23:09:42

标签: php mysqli sql-update bind sql-injection

我试图通过对所有数据库保存/更新/查询操作执行准备好的语句+绑定来防止Sql Injection的安全。 但是当表名+ user_id是变量时,我陷入了困境。代码:

// ALL USUAL $dbc MySqli DATABASE CONNECTION - then code statement prepare:
$stmt = $dbc->prepare("UPDATE ".$tablex." SET logo=?, last_mod=? WHERE ".$table_id."=?");
// or: $stmt = $dbc->prepare("UPDATE $tablex SET logo=?, last_mod=? WHERE $table_id=?"); same thing 

$stmt->bind_param('ssi', $log_logo, $last_mod, $user_id);

// execute and do some checking
$status_save = $stmt->execute();
if ($status_save === false) {trigger_error($stmt->error, E_USER_ERROR);}

只要知道$ tablex和$ table_id,它就可以正常工作。现在,它们可以具有不同的名称,并且使用变量会导致错误。我在这里做错了什么? Tx。

0 个答案:

没有答案