2009-10-08 70 views
0

我通常使用我自己的函數清理輸入,然後在查詢內添加值以防止sql注入。我也使用pear DB_DataObject。梨DB_DataObject和輸入清理

我讀somehere,DB_DataObject清理輸入本身。這是真的?我可以將未清理的輸入分配給DB_DataObject對象嗎? (怎麼樣mysql_real_escape_string?,我得到一個錯誤使用它與DB_DataObject結合,因爲沒有建立與數據庫的連接尚未建立)

另外,我很好奇其他人如何清理輸入。有最佳做法嗎?

回答

1

DB_DataObject清理在「 ​​- > set *」方法上傳遞的輸入,例如,

假設用戶是一個DB_DataObject,以下都將是安全的:

 

$user = new User; 
$user->firstName = $_REQUEST['first']; 
$user->setFirstName($_REQUEST['first']; 
$user->setFrom($_REQUEST); 
 

,你實際上傳遞SQL的片段的任何方法並不安全,像:

 

$user->selectAs($_REQUEST['col']. ', first as name'); 
$user->whereAdd("first=$_REQUEST['first]"); 
 

希望這使事情變得有點...