Bonjour,

Je cherche à savoir comment avoir un site asse sécurisé qui envoie du POST et GET dans des requêtes SQL.

Visiblement un QUERY en PDO ne suffi pas, j'utilise donc PREPARE, puis une EXECUTE(myarray).

Mais suffi ou pas ??? la est la question que peux semble bien vouloir répondre, je tente donc ma chance ici :D

Comment protéger sont site des données qui passe en GET et/ou POST et qui finisse dans une requête SQL ?

Je me suis bien penché sur intval(), mais quand il y à du text ?

Merci d'avance pour votre aide la dessus.

Librement

2 réponses


PhiSyX
Réponse acceptée

Salut !
Bha... Si ton $_GET ne contient que des nombres, utilise is_numeric :

if (isset($_GET'id']) && is_numeric($_GET'id'])) {
    $sql = $bdd->query('SELECT id,titre,contenu FROM news WHERE id=' . $_GET'id']);
    etc...
}

Si ton $_GET contient des nombres &&/ou des lettres, utilise mysql_escape_string. (ou mysql_real_escape_string) :

if (isset($_GET'titre'])) {
    $_GET'titre'] = mysql_escape_string($_GET'titre']);
    $sql = $bdd->query("SELECT id,titre,contenu FROM news WHERE titre='" . $_GET'titre'] . "'");
    etc...
}

De même pour les $_POST...
Voilà :p

Si tu ne fait pas requete après tes $_POST/$_GET utilise addslashes

Je me répond un peux, apprêt une nuit de lecture, prepare() semble LA solution miracle qui sécurise les requêtes.

Il me reste à trouver que mettre dans une fonction / ou class pour sécuriser GET et POST des id et textes.

Si vous avez de propositions....