我讀這個問題(Should I use bindValue() or execute(array()) to avoid SQL injection?),並發現execute(array())和bindParam()都防止SQL注入處理PDO並準備好陳述。我應該使用bindParam(),bindValue(),或執行()PDO預處理語句
但是我也記得讀書的地方,執行()自動將每一個變量爲一個字符串,如果不管它是一個整數。我的問題肯定是除了字符串變量以外,這是一個安全問題?
例如,如果我是讓在那裏通過一個準備好的查詢等於1的用戶的ID,但是穿過執行參數將被視爲一個字符串不是整數。
顯然,這個腳本不會有任何用戶輸入的方法,並且只支持用戶輸入比如更新個人資料,郵寄等
我學習PDO所以我想充分了解如何編寫安全的PDO查詢(或更好的功能),可以防止/防範SQL注入和其他安全漏洞。
感謝
你可以強制與bindParam參數類型,如果這就是你要找的內容。 http://php.net/manual/en/pdostatement.bindparam.php http://php.net/manual/en/pdo.constants.php – Linesofcode
你也可以做到這一點與PDOStatement對象:: bindValue。 http://php.net/manual/en/pdostatement.bindvalue.php –