Je veux juste vérifier si mes requêtes PHP-MYSQL sont sûres (si je le fais), j'utilise les données utilisateur qui arrivent via $ _POST puis je valide - le processus de validation de toutes les données inclut l'utilisation de mysqli_real_escape_string() sur la chaîne et trim(). La nature de certaines de mes entrées signifie cependant que je ne restreins aucun caractère à l'entrée de l'utilisateur. Est ce que je fais en toute sécurité et sinon comment pourrait-il être amélioré.Requête MYSQL sécurisée en utilisant l'entrée utilisateur
Un exemple d'une requête d'insertion (où $ nom et $ description sont $ _POST valeurs de données qui sont passées par une fonction de validation.)
$sql = "INSERT INTO company(company_name, company_description) VALUES('".$name."', '".$description."')";
$result = mysqli_query($con, $sql);
Un exemple d'une requête de sélection (où CompanyID $ est l'utilisateur entrée, real_escaped et dépouillé)
$sql = "SELECT * FROM events WHERE event_company=".$companyid."";
$result = mysqli_query($con, $sql);
Merci à l'avance.
vos requêtes ne sont pas du tout en sécurité, vous devez utiliser des instructions AOP ou mysqli préparés – cmorrissey
avoir une idée des conséquences des injections SQL ** [ici] (https: // xkcd.com/327/)**, et si vous ne voulez pas avoir à traiter avec lui, lisez ** [cette question/réponses assez complet sur le sujet.] (https://stackoverflow.com/questions/60174/ how-can-i-prevent-sql-injection-in-php) ** – YvesLeBorg
'mysqli_real_escape_string' ne protégera pas du tout votre requête select. Vous pouvez l'essayer avec '$ company =" 1 ou event_company = 2 ";' .Si 1 et 2 sont dans votre DB, vous aurez les deux. – jh1711