簡體   English   中英

我的PDO INSERT INTO是否足夠安全?

[英]Is my PDO INSERT INTO enough secure?

我希望您對我的代碼有意見。 是否足夠安全以防止任何注射。 多謝您的回覆。

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_tags的代碼與SQL注入無關。 可能需要使用它來防止跨站點腳本漏洞,但這是一個單獨的問題。 在將數據插入數據庫時​​,我不建議執行這些步驟。 當您輸出到HTML時,只需過濾XSS漏洞即可。 否則,您將得到字面& 序列存儲在數據庫中,還為時過早。 您不必每次都使用數據在HTML中顯示。 僅在輸出時對其進行編碼,而不在輸入時進行編碼。

我從來沒有為可能的magic_quotes_gpc進行補償。 在部署應用程序時進行測試,然后中止部署。 在2014年對任何 PHP實例設置magic_quotes_gpc都是無效的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM