Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 这个查询足够安全吗?_Php_Mysql - Fatal编程技术网

Php 这个查询足够安全吗?

Php 这个查询足够安全吗?,php,mysql,Php,Mysql,我正在接管其他人的PHP项目,在查看代码时,我发现了其中许多: $query = "INSERT INTO `".$_POST["tablename"]."` SET `cust_id`='".$_POST["cust_id"]."' , `cust_email`='".$_POST["cust_email"]."' ,`".$_POST["field"]."`='".mysql_real_escape_string($_POST["value"])."'"; mysql_query($sel

我正在接管其他人的PHP项目,在查看代码时,我发现了其中许多:

$query = "INSERT INTO `".$_POST["tablename"]."` SET `cust_id`='".$_POST["cust_id"]."' , `cust_email`='".$_POST["cust_email"]."' ,`".$_POST["field"]."`='".mysql_real_escape_string($_POST["value"])."'";

mysql_query($select); 
现在,据我所知,使用mysql_uu函数并不是一件好事,因为安全,而且因为,嗯,它们被弃用了。。。所以我想这些都必须改成mysqli_uu或PDO?
但是$_POST[“things”]呢?他只逃过了一个POST变量,为什么其他变量不逃过呢


编辑:在将这篇文章标记为重复后:我知道这是一个常见的问题,以前也有人问过。正是因为这是如此普遍的知识,我才特别提出这个问题。也许我遗漏了什么…

所以让我澄清一下答案:不!这个查询根本不安全。

所以让我澄清一下答案:不!此查询根本不安全。

很明显,您的前任不知道。但是代码的设计方式是不安全的——从POST接受表名?他不是一个很聪明的人?这个问题再本地化不过了。“他只漏掉了一个POST变量,为什么其他的都漏掉了?”-不称职?公平地说,我不认为这个问题是已经解决的问题的翻版(由于@AlvaroGVicario的评论中给出的原因:无法参数化SQL标识符,例如通过
$\u POST
传递的表名和字段名)。请参阅,了解您可以做些什么。问题中给出的代码在各个方面都是不安全的。直接进入查询的未转义post数据是错误的…使用旧的mysql_xx()函数…并使用post变量指定表名-哎哟;不要这样做。幸好您已经知道足够多的知识来识别问题。我猜您将在相当长的一段时间内忙于修复留下的代码库,如果这只是一个两行示例的话。很明显,您的ssor不知道。但代码的设计方式是不安全的——接受POST中的表名?他不是一个非常聪明的人?这个问题再本地化不过了。“他只逃过了一个POST变量,为什么没有逃过其他变量?”-不称职?公平地说,我不认为这个问题是已经结束的问题的重复(由于@AlvaroGVicario的评论中给出的原因:无法参数化SQL标识符,例如通过
$\u POST
传递的表名和字段名)。请参阅,了解您可以做些什么。问题中给出的代码在各个方面都是不安全的。直接进入查询的未转义post数据是错误的…使用旧的mysql_xx()函数…并使用post变量指定表名-哎哟;不要这样做。幸好您已经知道了足够多的知识来识别问题。我猜您将在相当长的一段时间内忙于修复留下的代码库,如果这只是一个两行示例的话。