2012-08-17 76 views
2

如何使此查詢SQL注入安全請? JRequest :: getVar會確保傳遞的參數是sql注入安全嗎?如何進行查詢sql注入安全在Joomla 2.5

$product_id = JRequest::getVar('product_id') 
$db = JFactory::getDBO(); 
$query = " select * from #__products where product_id=".$product_id."; ";  
$db->setQuery($query); 
$data = $db->loadObjectList(); 
return $data[0]; 

回答

2

是,使用getVar函數訪問請求變量,將確保它的使用在其他地方之前,所有用戶數據被過濾(如SQL查詢)。 getVar JRequest類中的方法會自動過濾輸入(除非另有明確說明)。

您還可以使用quote插入到數據庫

+0

謝謝你的回答,這是肯定的嗎?因爲當我四處張望時,有人告訴我,我應該使用類似JDatabase :: quote的東西來確保這一點.. – themis 2012-08-17 04:35:38

+1

是的,你可以使用它,以便字符串在插入到數據庫之前被轉義 – 2012-08-17 04:39:55

+0

好的,然後謝謝 – themis 2012-08-17 04:41:18

3

正如@蘇德赫的答案的擴展之前轉義字符串。

JRequest自從Joomla!已經貶值! 1.7,並逐漸被刪除,例如Potential backward compatibility issues in Joomla 3.0。如果您打算保留您的組件,則可能需要將舊式JRequest調用遷移到JInput

+0

好吧我剛剛檢查它也兼容2.5謝謝你 – themis 2012-08-17 05:33:19