2012-11-12 34 views
0

可能重複:
how safe are PDO prepared statementsPDO安全問題

所以我一直在尋找到PDO來取代我的PHP所有的MySQL查詢。我這樣做的主要原因是安全性和編碼方便。就安全而言,我只是想知道。一旦我完成替換任何mysql查詢調用以及從PDO用戶捕獲的任何數據,我應該考慮將準備和執行查詢放在什麼位置?或者會照顧安全。我想我只是不明白PDO的安全性。這裏是我的一些獲取用戶輸入然後將其放入數據庫的代碼示例。這有什麼問題嗎?或者我可以做的改進?

<?php 
session_start(); 
include("dbgear.php"); 

$var1 = $_POST['stuff1']; 
$var2 = $_POST['stuff2']; 
$var3 = $_POST['stuff3']; 
$var4 = $_POST['stuff4']; 
$var5 = $_SESSION['stuff5']; 
$vardate = date("M d, Y h:i A"); 


$info = "INSERT INTO comments SET  name=:user,class=:class,comment=:commentarea,date=:date,detector=:detector"; 


$send = $connect->prepare($info); 
$send->execute(array(':user'=>$var1,':class'=>$var2,':commentarea'=>$var3,':date'=>$var4,':detector'=>$var5)); 

?> 
+0

安全性(實際上是一種副產品)來自SQL命令從數據值分別發送到服務器,不會發生字符串插值。在真正準備好的語句模式中,也就是說。在PDO仿真模式下, - > execute將簡單地轉義原始值。這就是爲什麼你不必打擾。 (關於值。與動態標識符或變體查詢不同[...](http://stackoverflow.com/a/8255054/345031)) – mario

回答

1

你不必擔心你放入數據庫的內容。一切(安全方面)都由PDO處理。

但請記住,如果您稍後在網站上使用數據,它可以包含JavaScript(XSS注入)。因此,在將數據輸入數據庫之前,請始終過濾您的用戶數據,將整數轉換爲int,過濾用戶上傳的html等,以獲得最安全的方法。