PHP et sécurité, exécution de scripts via un formulaire.

PHP et sécurité, exécution de scripts via un formulaire. - PHP - Programmation

Marsh Posté le 26-11-2002 à 16:07:35    

J'ai entendu parler d'une méthode qui consisterait à utiliser, dans un formulaire de login, par exemple, (nom et pass), un mot de passe bidon suivit d'une commande enchainée pour qu'elle soit éxécutée par le serveur... possible ?


Message édité par Master_Jul le 26-11-2002 à 16:08:15
Reply

Marsh Posté le 26-11-2002 à 16:07:35   

Reply

Marsh Posté le 26-11-2002 à 16:30:59    

possible si le script ne contrôle pas les variables
 
 
d'une manière générale, tout est possible quand c'est mal fait..


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 26-11-2002 à 16:32:48    

si...
formulaire :
login= toto (user existant)
pwd= test' and '1=1
 
si la query n'est pas correcte, tu exécutes le code
query codée :
select login from user where login='$login' and password='$pwd'  
 
après réception des données
select login from user where login='toto' and password='test' or '1=1'
 
exécution de la query... ok elle retourne des résultats... le user est valide -->  bardaf, tu t'es fait hacké
 
protection de la query :
- gpc à on dans php.ini -> ajout automatique d'un \ devant les caractères délicats passés par Get/Post/Cookie ou addslash($password)
- md5($password)


Message édité par ethernal le 26-11-2002 à 16:34:51

---------------
...oups kernel error...
Reply

Marsh Posté le 26-11-2002 à 16:33:30    

faut faire un listing de toutes les variables PHP interdites  :heink:

Reply

Marsh Posté le 26-11-2002 à 16:35:28    

Va voir là : http://www.php.net/manual/fr/security.filesystem.php
Il suffit que tes variables ne soient pas testées, par exemple. Pour le coup de la commande lancée, t'as : http://www.php.net/manual/fr/security.cgi-bin.php
Ca n'arrive que si PHP est configuré en mode CGI et non en module pour ton serveur Ouaibe.


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 26-11-2002 à 16:35:51    

j ai pas tout compris ethernal, skoi gcp, mp5 ?

Reply

Marsh Posté le 26-11-2002 à 16:43:11    

merci :)

Reply

Marsh Posté le 26-11-2002 à 16:46:50    

le but est d'être sûr que ce qui sera mis dans ta query est valide :
si ' et " sont transformés en \' et \", il n'y a plus moyen de trafiquer ta query à la volée.
Pour faire cela, soit tu le fais toi même avec addslashes(), soit tu configures ton serveur php pour qu'il le fasse automatiquement : dans php.ini tu mets  
magic_quotes_gpc= On
de cette façon les variables issues de g(Get) p(Post) c (Cookie) seront traitées par le serveur.
 
le md5() c'est pour crypter, c'est rien je me suis emporté :D
mais bon si tu cryptes ton pwd avant de le comparer dans ta query, il est impossible d'exécuter qqch que tu ne veux pas, mais c'est pas la priorité.


---------------
...oups kernel error...
Reply

Marsh Posté le 26-11-2002 à 17:39:48    

Wow, effectivement.
 
Merci pour les infos :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed