[PHP] mon site est t’il sécurisée ?

Vous ne vous êtes jamais demandée:
Mon site est t’il aussi bien protégée ? contre les injection sql par exemple ?
C’est ce que nous allons vériffier aujourd’huis.
note: certains bouts de code suivants vienne d’u livre Programmez n°156 octobre 2012.

1- Comment devenir admin en 5 secondes sur un site dont les variables ($login ou $password) ne sont pas sécurisée
imaginer l’utilisateur aller à http://urldusite.com/script.php?login=admin’ -« &password=invinlid password
dans un script comme cela:

<?php
$query = 'SELECT FROM users WHERE login = "'.$_GET['login']." AND password = "'.$_GET['password'].'";';

avec notre exemple, cela donnerait:

<?php
$login = "'admin' – ";
$password = "invalid password";

texte du livre.
l’exploir provient ici de la possibilitée d’injecter une quote dans la variable: sans cela, il n’aurait pas été possible de forger la requête à notre bon vouloir. La plupart des développers connaissent la fonction mysql_real_escape_string qui permet de contourner le problème des carractères spéciaux utilisée dans une requète SQL. Malheureusement, cette fonction ne permet pas de se prémunir contre toute les injection,s; Exemple avec la requète suivante:
$query = « SELECT * FROM users WHERE is_admin = 1 AND id= » .$_GET[‘id’];
ici, mysql_real_escape_string ne nous est d’aucune utilitée puisque aucune quote n’est utilisée. En entrant simplement -1 OR is_admin=1 LIMIT, on récupère un compte administrateur. La protection est simple: modifiet la requète pour

Laisser un commentaire