我想知道这段代码是否可以安全地进行SQL注入和其他类型的利用?如果安全的话,谁能向我解释呢?如果不是,那么任何人都可以进行纠正
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "form";
//Requesting values form form.html
$a = $_REQUEST['fname'];
$b = $_REQUEST['lname'];
$c = $_REQUEST['email'];
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " .$conn->connect_error);
}
// prepare and bind
$stmt = $conn->prepare ("INSERT INTO my_db (fname, lname, email)
VALUES (?, ?, ?)");
$stmt->bind_param("sss",$a,$b,$c);
$stmt->execute();
echo "new record created successfully";
$stmt->close();
$conn->close();
?>
答案 0 :(得分:-2)
是的,从SQL Injection来看是安全的,但仍可以在安全性方面进行改进。
SQL注入是当您将sql查询与用户参数连接在一起时,这为恶意用户提供了在数据库中注入数据或执行危险操作的机会。
假设您有一个代码:
$query = 'select * from user where id = ' + $_GET['id'];
现在假设黑客将id参数发送为1或1 = 1,那么您的查询将变为
select * from user where id = 1 or 1 = 1
这将返回所有用户。还有其他注入方式
由于您正在使用准备好的语句并绑定所有参数,因此无法连接sql查询。
安全性,