如何以简单的形式禁用SQL注入的可能性?

时间:2016-07-15 03:33:20

标签: php mysql sql sql-injection

我有这个评论表单,其中唯一的输入是名称和评论的文本区域。

我的问题是:如何确保在我的代码中无法使用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(); 
}
?>

1 个答案:

答案 0 :(得分:4)

您已经安全地防止SQL注入。防止它的唯一方法是使用准备好的语句和适当的参数化。也就是说,使用带有每个的参数的预准备语句,其中包含用户输入。你正在这样做,所以你处于良好的状态。

请注意:意味着您可以将数据视为&#34;清洁&#34;或者安全。例如,你不能从数据库中提取它而只是echo它。这样做可以打开一种称为XSS或跨站点脚本的攻击(在技术上,在这种情况下,反射XSS)。

有关详细信息和了解详情,请参阅: