Php 我的PDO插入是否足够安全?

Php 我的PDO插入是否足够安全?,php,mysql,security,pdo,code-injection,Php,Mysql,Security,Pdo,Code Injection,我想听听你对我的代码的意见。它是否足够安全以防任何注射。 谢谢你的回复 class Product extends DB { public function __construct() { $db = $this->DB(); if(isset($_POST['productName'])) { foreach ($_POST as $key => $value) { if (ini_get('magic_quotes_

我想听听你对我的代码的意见。它是否足够安全以防任何注射。 谢谢你的回复

class Product extends DB {

  public function __construct() {
    $db = $this->DB();

    if(isset($_POST['productName'])) {
        foreach ($_POST as $key => $value) {
            if (ini_get('magic_quotes_gpc'))
                $_POST[$key] = stripslashes($_POST[$key]);
                $_POST[$key] = htmlspecialchars(strip_tags($_POST[$key]));
        }
        $this->AddProduct();
    }
  }

  public function AddProduct() {
    $sSQL = "INSERT INTO ".PREFIX."product (productName, productPrice) 
                VALUES (:productName,:productPrice)";
    $query = $this->db->prepare($sSQL);
    $query->execute(array(
        ":productName" => $_POST['productName'],
        ":productPrice" => $_POST['productPrice']
    )); 
  }
}

使用查询参数足以使其免受SQL注入漏洞的攻击

调用htmlspecialchars和strip_标记的代码与SQL注入无关。可能需要它来防止跨站点脚本漏洞,但这是另一个问题。我不建议在将数据插入数据库时执行这些步骤。只需在输出到HTML时过滤XSS漏洞。否则,您将得到literal
&存储在数据库中的序列,这还为时过早。您不必每次都使用HTML显示数据。只需在输出时对其进行编码,而不是在输入时


我从不为可能的神奇的gpc进行补偿。在部署应用程序时对其进行测试,然后中止部署。2014年,任何PHP实例设置magic_quotes_gpc都是无效的。

使用查询参数足以使其免受SQL注入漏洞的攻击

调用htmlspecialchars和strip_标记的代码与SQL注入无关。可能需要它来防止跨站点脚本漏洞,但这是另一个问题。我不建议在将数据插入数据库时执行这些步骤。只需在输出到HTML时过滤XSS漏洞。否则,您将得到literal
&存储在数据库中的序列,这还为时过早。您不必每次都使用HTML显示数据。只需在输出时对其进行编码,而不是在输入时


我从不为可能的神奇的gpc进行补偿。在部署应用程序时对其进行测试,然后中止部署。2014年,任何PHP实例设置magic_quotes_gpc都是无效的。

使用查询参数足以使其免受SQL注入漏洞的攻击

调用htmlspecialchars和strip_标记的代码与SQL注入无关。可能需要它来防止跨站点脚本漏洞,但这是另一个问题。我不建议在将数据插入数据库时执行这些步骤。只需在输出到HTML时过滤XSS漏洞。否则,您将得到literal
&存储在数据库中的序列,这还为时过早。您不必每次都使用HTML显示数据。只需在输出时对其进行编码,而不是在输入时


我从不为可能的神奇的gpc进行补偿。在部署应用程序时对其进行测试,然后中止部署。2014年,任何PHP实例设置magic_quotes_gpc都是无效的。

使用查询参数足以使其免受SQL注入漏洞的攻击

调用htmlspecialchars和strip_标记的代码与SQL注入无关。可能需要它来防止跨站点脚本漏洞,但这是另一个问题。我不建议在将数据插入数据库时执行这些步骤。只需在输出到HTML时过滤XSS漏洞。否则,您将得到literal
&存储在数据库中的序列,这还为时过早。您不必每次都使用HTML显示数据。只需在输出时对其进行编码,而不是在输入时



我从不为可能的神奇的gpc进行补偿。在部署应用程序时对其进行测试,然后中止部署。2014年,任何PHP实例设置magic_quotes_gpc都是无效的。

您似乎正确地使用了参数化查询,因此可以防止SQL注入(PDO本身没有bug)。感谢您的回复。您似乎正确地使用了参数化查询,因此可以防止SQL注入(禁止PDO本身中的bug)。感谢您的回复。您似乎正确地使用了参数化查询,因此可以防止SQL注入(禁止PDO本身中的bug)。感谢您的回复。您似乎正确地使用了参数化查询,因此可以防止SQL注入(禁止PDO本身中的bug)。谢谢你的回复。谢谢你聪明的回复。magic_quotes_gpc设置为打开,因为我在本地计算机上,但我理解你的评论。但是,关于JS注入,例如,我不明白为什么你建议在将数据插入数据库之前不剥离标记。那么我的数据库中将有JS代码?“那么我的数据库中会有JS代码吗?"是的,这很好。你应该在显示端处理这些事情,而不是在插入端。这可以防止转义可能产生意外结果的情况——如果你在插入时转义,你就失去了用户的原始提交。如果你在输出时转义,你可以动态调整转义,并让它始终工作。哦,好的,我在下面现在站起来,你说得对。我以后会尽量少关注数据库的“美:)再次感谢你的回复。实际存储输入的数据库是美的,存储该数据的HTML(-safe)表示是缓存机制的一部分;)我完全同意@Wrikken。说得很好。谢谢你聪明的回答。magic_quotes_gpc设置为打开,因为我在本地机器上,但我理解您的评论。然而,关于JS注入,例如,我不理解为什么您建议在将数据插入数据库之前不剥离标签。那么我的数据库中会有JS代码吗?“那么我的数据库中会有JS代码吗?”是的,那很好。您应该在显示端处理这些事情,而不是在插入端。这可以防止转义可能产生意外结果的情况—如果在插入时转义,则会丢失用户的原始提交。如果你在输出时逃逸,你可以动态地调整逃逸,让它一直工作。哦,好吧,我现在明白了,你是对的。我会尽量不那么专注