Php 使用用户输入的安全MYSQL查询
我只想检查我的PHP-MYSQL查询有多安全(如果有的话),我使用的是通过$\u POST获得的用户数据,然后进行验证-所有数据的验证过程包括在字符串和trim()上使用mysqli\u real\u escape\u string()。然而,我的一些输入的性质意味着我不限制用户输入的任何字符。我所做的是安全的,如果不是的话,如何改进 插入查询的示例(其中$name和$description是已通过验证函数的$u POST数据值。) select查询示例(其中$companyid是用户输入,real_转义并剥离)Php 使用用户输入的安全MYSQL查询,php,mysql,php-5.5,Php,Mysql,Php 5.5,我只想检查我的PHP-MYSQL查询有多安全(如果有的话),我使用的是通过$\u POST获得的用户数据,然后进行验证-所有数据的验证过程包括在字符串和trim()上使用mysqli\u real\u escape\u string()。然而,我的一些输入的性质意味着我不限制用户输入的任何字符。我所做的是安全的,如果不是的话,如何改进 插入查询的示例(其中$name和$description是已通过验证函数的$u POST数据值。) select查询示例(其中$companyid是用户输入,re
提前感谢。有一种叫做“SQL注入”的黑客,可以欺骗你的控制。阅读此处了解更多信息以下是您的查询更新,以使用mysqli准备的语句
$sql = "INSERT INTO `company` (`company_name`, `company_description`) VALUES(?, ?)";
$stmt = $con->prepare($sql);
$stmt->bind_param('ss',$name,$description); // ss is for string string
$stmt->execute();
$result = $stmt->get_result();
及
您的查询根本不安全,您需要使用PDO或mysqli prepared语句感受SQL注入的后果,如果您不想处理它,那么read
mysqli\u real\u escape\u string
根本不会保护您的选择查询。您可以使用$company=“1”或event\u company=2”进行尝试代码>。如果数据库中有1和2,则两个都会出现。
$sql = "SELECT * FROM events WHERE event_company=".$companyid."";
$result = mysqli_query($con, $sql);
$sql = "INSERT INTO `company` (`company_name`, `company_description`) VALUES(?, ?)";
$stmt = $con->prepare($sql);
$stmt->bind_param('ss',$name,$description); // ss is for string string
$stmt->execute();
$result = $stmt->get_result();
$sql = "SELECT * FROM `events` WHERE `event_company` = ?";
$stmt = $con->prepare($sql);
$stmt->bind_param('i',$companyid); // i indicates integer
$stmt->execute();
$result = $stmt->get_result();