Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何以简单的形式禁用SQL注入可能性?_Php_Mysql_Sql_Sql Injection - Fatal编程技术网

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

Php 如何以简单的形式禁用SQL注入可能性?,php,mysql,sql,sql-injection,Php,Mysql,Sql,Sql Injection,我有一个评论表单,其中唯一的输入是评论的名称和文本区域 我的问题是:如何确保在我的代码中没有使用SQL注入的方法?我找到了一些这方面的指南,但我不知道如何使它们与我的代码一起工作 <?php if(isset($_POST['submit'])){ $pvm = date("F j, Y"); $postId = $_GET["post"]; $lahettaja = $_POST['name']; $kommentti = $_POST['comme

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

我的问题是:如何确保在我的代码中没有使用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注入。防止这种情况发生的唯一方法是使用具有适当参数化的预处理语句。也就是说,对于可能包含用户输入的每一件事,都使用带有参数的准备语句。你这么做了,所以你的状态很好

请注意:这并不意味着您可以将数据视为干净或安全的。例如,您不能从数据库中提取它,而只是回显它。这样做会使您面临一种称为XSS的攻击,或者技术上称为跨站点脚本(在本例中为XSS)的攻击

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


您已经可以防止SQL注入。防止这种情况发生的唯一方法是使用具有适当参数化的预处理语句。也就是说,对于可能包含用户输入的每一件事,都使用带有参数的准备语句。你这么做了,所以你的状态很好

请注意:这并不意味着您可以将数据视为干净或安全的。例如,您不能从数据库中提取它,而只是回显它。这样做会使您面临一种称为XSS的攻击,或者技术上称为跨站点脚本(在本例中为XSS)的攻击

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


参考链接,如参考链接,如好的,非常感谢!我真的认为我需要添加一些东西来检查表单或类似的东西。很高兴知道我做对了。@Frostbch很高兴能帮上忙@Ed Cottrell如何清理POST数据?@unixmiah怎么办?与正确使用带参数化的准备语句相比,正确的清理非常困难,并且非常容易出错。后者是防止SQL注入的黄金标准,因为它使SQLi攻击实际上不可能发生。@Ed Cottrell,我同意。任何形式的外部负载都是不可预测的,因此适当的卫生非常困难。好的,非常感谢!我真的认为我需要添加一些东西来检查表单或类似的东西。很高兴知道我做对了。@Frostbch很高兴能帮上忙@Ed Cottrell如何清理POST数据?@unixmiah怎么办?与正确使用带参数化的准备语句相比,正确的清理非常困难,并且非常容易出错。后者是防止SQL注入的黄金标准,因为它使SQLi攻击实际上不可能发生。@Ed Cottrell,我同意。任何形式的外部有效载荷都是不可预测的,因此很难进行适当的卫生处理。