2012-08-17 3 views
2

Comment est-ce que je peux rendre cette injection de sql de requête sûre s'il vous plaît? JRequest :: getVar s'assurera-t-il que le paramètre transmis est sans danger pour l'injection sql?Comment faire une requête sql Injection safe dans 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]; 

Répondre

2

Oui, en utilisant la fonction getVar pour accéder aux variables de demande, veillera à ce que toutes les données utilisateur est filtré avant qu'il ne soit utilisé ailleurs (comme dans les requêtes SQL). La méthode getVar de la classe JRequest filtre automatiquement l'entrée (sauf indication contraire explicite).

Vous pouvez également utiliser quote pour échapper à des chaînes avant d'insérer la base de données

+0

je vous remercie pour votre réponse, est-ce sûr? Parce que comme je regardais autour, quelqu'un m'a dit que je devrais utiliser quelque chose comme JDatabase :: quote pour assurer cela .. – themis

+1

oui, vous pouvez utiliser cela aussi que les chaînes sont échappées avant d'insérer à la base de données –

+0

ok alors merci – themis

3

Tout comme une extension de @ réponse de Sudhir.

JRequest a été dépréciée depuis Joomla! 1.7 et est progressivement retiré par ex. Potential backward compatibility issues in Joomla 3.0. Si vous avez l'intention de garder votre composant autour, vous pouvez migrer vos anciens appels de style JRequest vers JInput.

+0

ok je viens de le vérifier est également compatible avec 2.5 merci – themis