Php 如何以简单的形式禁用SQL注入可能性?
我有一个评论表单,其中唯一的输入是评论的名称和文本区域 我的问题是:如何确保在我的代码中没有使用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
<?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,我同意。任何形式的外部有效载荷都是不可预测的,因此很难进行适当的卫生处理。