在php mysql语句中攻击的缺点

时间:2018-02-03 18:24:21

标签: php mysql

我在其工作下面有以下代码,但有人说它容易出现sql注入攻击我怎么能阻止它?下面的代码实际上将数据插入到表消息中,并在插入后回显插入的字符串消息。

date_default_timezone_set("Asia/Kolkata");
$f = date('d-m-Y');
$e = date("h:i:sa");
$name = $_POST['name'];
$phone = $_POST['phone'];
$email = $_POST['email'];
$subject = $_POST['subject'];
$message = $_POST['message'];

$sql="insert into messages values($f,$e,$name,$phone,$email,$message,$replymail,$replyphone)";
$result=$conn->query($sql);
if($result === TRUE)
{
echo"Message Inserted";
}

如果您可以提供帮助,将会很有帮助

1 个答案:

答案 0 :(得分:1)

你需要的是bind_param语句,使用prepare语句来确保你的php mysql脚本从mysql注入是安全的,也比在变量上使用mysql_real_escape_strings()更好,因为我已经在某处读过它们并不像准备那么可靠语句

$sql =$conn->prepare("insert into messages values(?,?,?,?,?,?,?,?)");
$sql->bind_param("ssssssss",$f,$e,$name,$phone,$email,$message,$replymail,$replyphone);

if($sql->execute())
{
echo"Message Inserted";
}