PHP-防止INSERT语句上的SQL注入
我将保持简短,我正在尝试将一些代码应用到我的insert查询中,以防止SQL注入。请参阅下面的代码:PHP-防止INSERT语句上的SQL注入,php,sql,insert,Php,Sql,Insert,我将保持简短,我正在尝试将一些代码应用到我的insert查询中,以防止SQL注入。请参阅下面的代码: $insertquery = mysql_query("INSERT INTO users (firstname, lastname, email, username, password) VALUES ('".mysql_real_escape_string($fname)."', '".mysql_real_escape_string($lname)."', '".mysql_real_es
$insertquery = mysql_query("INSERT INTO users (firstname, lastname, email, username, password) VALUES ('".mysql_real_escape_string($fname)."', '".mysql_real_escape_string($lname)."', '".mysql_real_escape_string($email)."', '".mysql_real_escape_string($username)."', .'".mysql_real_escape_string($pass)."')");
header("location:index-login-page.php?msg1=Thank you for choosing SIAA, please login.");
上面的代码没有插入任何数据,但仍然打印msg1消息。我做错了什么,或者是否有可能阻止insert语句上的SQL注入
多谢各位
Sohail.使用PDO和准备好的查询。使用准备好的语句和参数化查询。这些SQL语句与任何参数分开发送到数据库服务器并由数据库服务器解析。通过这种方式,攻击者不可能注入恶意SQL
($conn is a PDO object)
$conn = new PDO('mysql:dbname=dbtest;host=127.0.0.1;charset=utf8', 'user', 'pass');
$conn->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare("INSERT INTO users VALUES(:firstname, :lastname)");
$stmt->bindValue(':firstname', $firstname);
$stmt->bindValue(':lastname', $lastname);
$stmt->execute();
使用PDO和准备好的查询。使用准备好的语句和参数化查询。这些SQL语句与任何参数分开发送到数据库服务器并由数据库服务器解析。通过这种方式,攻击者不可能注入恶意SQL
($conn is a PDO object)
$conn = new PDO('mysql:dbname=dbtest;host=127.0.0.1;charset=utf8', 'user', 'pass');
$conn->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare("INSERT INTO users VALUES(:firstname, :lastname)");
$stmt->bindValue(':firstname', $firstname);
$stmt->bindValue(':lastname', $lastname);
$stmt->execute();
使用预先准备好的语句,这将在任何情况下解决问题。通过这种方式,用户输入是单独发送的,无法篡改查询
或者使用预先准备好的语句,这将在任何情况下解决问题。通过这种方式,用户输入是单独发送的,无法篡改查询
或者在sof中有一个流行的问题。基本调试:在执行查询之前回显查询。显示什么?在sof中有一个流行的问题。基本调试:在执行查询之前回显查询。显示的是什么?嗨,Ninju,你放在哪里($conn是一个PDO对象)-我收到一个错误,说“意外的是”。。这是为什么?我已经编辑了我的答案。使用PDO访问MySQL数据库默认情况下不使用real prepared语句。但是如果我在php文件上写了“include”(“dbconfig.php”)?你需要在dbconfig.php.Ok中设置PDO连接,我现在就试试。Hi Ninju,你放在哪里($conn是一个PDO对象)-我在说意外的“是”时出错。。这是为什么?我已经编辑了我的答案。使用PDO访问MySQL数据库默认情况下不使用real prepared语句。但是如果我在php文件的顶部写了“include”(“dbconfig.php”)?你需要在dbconfig.php.Ok中设置PDO连接,我现在就试试。