Impossible de trouver une réponse mais de se demander si la requête suivante vers la base de données est vulnérable à l'injection sql.L'utilisation de la fonction de base de données get_results() WordPress empêche-t-elle l'injection SQL?
$searchPostResults = $wpdb->get_results($querySearchVals, OBJECT);
C'est la requête qui est utilisée:
global $wpdb;
$offset = (isset($_POST["moreSearchResults"])) ? $_POST["searchOffset"] : 0;
$querySearchVals = "
SELECT DISTINCT post_title, ID
FROM {$wpdb->prefix}posts
WHERE (";
$sVals = array();
$sVals = explode(" ", $searchVal);
$lastIndex = intval(count($sVals)) - 1;
$orderByCaseVals = "";
for($i = 0; $i<count($sVals);$i++)
{
$querySearchVals .= " post_title LIKE '%$sVals[$i]%' ";
if($i != $lastIndex)
$querySearchVals .= " OR ";
$orderByCaseVals .= " WHEN post_title LIKE '%$sVals[$i]%' THEN ($i + 2) ";
}
$querySearchVals .= ")
AND {$wpdb->prefix}posts.post_type = 'post'
AND post_status = 'publish'
ORDER BY CASE
WHEN post_title LIKE '%$searchVal%' THEN 1
$orderByCaseVals
END
LIMIT $offset, 6;
";
Vive
Quelle est la requête? L'injection se produit avec une interpolation de chaîne ou une concaténation, mais '$ querySearchVals' pourrait contenir n'importe quoi ici, donc ... peut-être? – tadman
@tadman J'ai ajouté la requête pour vous, merci pour l'aide –
Ouais, cette chose est grande ouverte et super plein de trous. Utilisez des valeurs d'espace réservé pour * toutes les données utilisateur * et toutes. – tadman