Php 受保护的PDO表名
我正试图在帖子中发送表名,但这是否受到足够的保护Php 受保护的PDO表名,php,pdo,Php,Pdo,我正试图在帖子中发送表名,但这是否受到足够的保护 $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $naam = $_POST['naam']; $sql = "INSERT INTO ".$naam." (".$rows.") VALUES (".$values.")"; 我也
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$naam = $_POST['naam'];
$sql = "INSERT INTO ".$naam." (".$rows.") VALUES (".$values.")";
我也试过了
$naam = $db->quote($_POST['naam']);
这也不管用。最高结果是否足够安全
此外:
完整代码
它在我的数据库中插入
a1、a2和a3:d
什么时候
a1=a a2=s a3=d
试试看{
$db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_异常);
$naam=$_POST['naam'];
$sql=”
插入“$naam.”(“$rows.”)
值(“.$VALUES.”)
";
$stmt=$db->prepare($sql);
对于($i=$\u POST['begin'];$i<$iets;$i++){
$anum='a'.$i;
$avalue=$\u POST[$anum];
$stmt->bindParam($anum、$avalue、PDO::PARAM_STR);
printf(“%s,%s | |,$anum,$avalue);
}
printf(“%s,%s | |,$rows,$values);
$stmt->execute();
}
捕获(PDO$e)
{
回声';
$sql = "INSERT INTO table_name (col1,col2) VALUES (:val1, :val2)";
$stmt = $this->_db->prepare($sql);
$stmt->bindParam(':val1', $value1, PDO::PARAM_INT);
$stmt->bindParam(':val2', $value2, PDO::PARAM_STRING);
回显“Regel:”。$e->getLine()。
;
$sql = "INSERT INTO table_name (col1,col2) VALUES (:val1, :val2)";
$stmt = $this->_db->prepare($sql);
$stmt->bindParam(':val1', $value1, PDO::PARAM_INT);
$stmt->bindParam(':val2', $value2, PDO::PARAM_STRING);
回显“Bestand:”。$e->getFile()。
;
$sql = "INSERT INTO table_name (col1,col2) VALUES (:val1, :val2)";
$stmt = $this->_db->prepare($sql);
$stmt->bindParam(':val1', $value1, PDO::PARAM_INT);
$stmt->bindParam(':val2', $value2, PDO::PARAM_STRING);
回显“Foutmelding:”。$e->getMessage();
$sql = "INSERT INTO table_name (col1,col2) VALUES (:val1, :val2)";
$stmt = $this->_db->prepare($sql);
$stmt->bindParam(':val1', $value1, PDO::PARAM_INT);
$stmt->bindParam(':val2', $value2, PDO::PARAM_STRING);
回声';
$sql = "INSERT INTO table_name (col1,col2) VALUES (:val1, :val2)";
$stmt = $this->_db->prepare($sql);
$stmt->bindParam(':val1', $value1, PDO::PARAM_INT);
$stmt->bindParam(':val2', $value2, PDO::PARAM_STRING);
}
用户可以完全控制将数据插入到哪个表中。你没有充分利用pdo。在查询中使用参数
这里的表名是硬编码的,列也是硬编码的。值将自动转义。用户完全可以控制将数据插入哪个表。你没有充分利用pdo。在查询中使用参数
这里的表名是硬编码的,列也是硬编码的。值将自动转义。不,这不安全,
naam=用户我想要什么--
(1)永远不要让用户决定查询的表名(2)永远不要让用户决定查询的表名(3)如果必须,在已知集合中列出表名(4)使用参数,而不是字符串生成。不,这不安全,naam=用户我想要什么--
(1)永远不要让用户为您的查询决定一个表名(2)永远不要让用户为您的查询决定一个表名(3)如果必须,请将已知集合中的表名列为白名单(4)使用参数,而不是字符串生成。