我有这个评论表单,其中唯一的输入是名称和评论的文本区域。
我的问题是:如何确保在我的代码中无法使用SQL注入?我找到了一些这方面的指南,但我不知道如何使它们与我的代码一起使用。
<?php
if(isset($_POST['submit'])){
$pvm = date("F j, Y");
$postId = $_GET["post"];
$lahettaja = $_POST['name'];
$kommentti = $_POST['comment'];
$sql = "INSERT INTO kommentti (post_id,kommentti_pvm,kommentti,lahettaja) VALUES (:post,:kommentti_pvm,:kommentti,:lahettaja)";
$kysely = $yhteys->prepare($sql);
$kysely->bindParam("post", $postId);
$kysely->bindParam("kommentti_pvm", $pvm);
$kysely->bindParam("kommentti", $kommentti);
$kysely->bindParam("lahettaja", $lahettaja);
$kysely->execute();
}
?>
答案 0 :(得分:4)
您已经安全地防止SQL注入。防止它的唯一方法是使用准备好的语句和适当的参数化。也就是说,使用带有每个的参数的预准备语句,其中包含用户输入。你正在这样做,所以你处于良好的状态。
请注意:不意味着您可以将数据视为&#34;清洁&#34;或者安全。例如,你不能从数据库中提取它而只是echo
它。这样做可以打开一种称为XSS或跨站点脚本的攻击(在技术上,在这种情况下,反射XSS)。
有关详细信息和了解详情,请参阅: