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

How to disable SQL injection possibility in a simple form?

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

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

您已经可以防止 SQL 注入。防止它的唯一方法是使用具有适当参数化的准备好的语句。也就是说,为 可能包含用户输入的每个事物 使用带参数的准备语句。你做到了,所以你的状态很好。

请注意:这 意味着您可以将数据视为 "clean" 或安全。例如,您不能从数据库中提取它并仅 echo 它。这样做会使您面临一种称为 XSS 或跨站点脚本(从技术上讲,在这种情况下为反射 XSS)的攻击。

有关更多信息和了解更多信息,请参阅: