可能重複:
Best way to prevent SQL Injection in PHPPDO和hash來防止SQL注入
我試圖插入用戶輸入到數據庫中。
這是PDO和散列足夠安全:
$dbh = new PDO("mysql:host=hostName; dbname=dbName", "user", "pass");
if(isset($_POST['Submit']))
{
$user = $_POST['user'];
$pass = $_POST['pass'];
$salt = substr(str_replace('+', '.', base64_encode(sha1(microtime(true), true))), 0, 22);
$hash = crypt($pass, '$2a$12$' . $salt);
$mail = $_POST['mail'];
$confirm_key=md5(uniqid(rand()));
$sth = $dbh->prepare("INSERT INTO members(user, pass, mail, confirm_key)
VALUES ('$user', '$hash', '$mail', '$confirm_key')");
$sth->execute();
不可以。不要通過將字符串混合在一起(特別是當它們包含用戶數據時,特別是在它們包含未修改的用戶數據(例如用戶和郵件)時加倍)來構建SQL。 – Quentin 2012-08-05 12:40:51
自上次您詢問[相同問題](http://stackoverflow.com/questions/11805986/pdo-to-prevent-sql-injection)上次關於此代碼的迭代以來,您已*添加*問題。 – Quentin 2012-08-05 12:42:31
如果您希望人們查看您的代碼,請在[codereview](http://codereview.stackexchange.com/)上詢問,而不是在這裏。 – Quentin 2012-08-05 12:42:53