Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1190 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [PHP/Mysql] Les trous de sécurité de base à éviter

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

[PHP/Mysql] Les trous de sécurité de base à éviter

n°1685569
getget
Il y en a qui ont essayé ...
Posté le 12-02-2008 à 22:07:46  profilanswer
 

Bonjour, je developpe un site internet "un peu" sensible et donc je souhaite connaître les failles de sécurités les plus connues pour les éviter.
 
Je commence par l'injection SQL :
 
Une page php récupère via un formulaire un login et un pass :
 
<?php
 
// requête SQL typique d'une interface utilisateur
$sql = "SELECT * FROM user_tbl WHERE login = '".$_GET['login']."' AND password = '".$_GET['password']."';
 
?>
 
tout semble aller, sauf que si une personne mal intentionée rentre en login n'importe quoi et en password ' OR password LIKE '% la requete qui est executée devient  SELECT * FROM user_tbl WHERE login = 'toto' AND password = '' OR password LIKE '%' et se retrouve donc loggué sans avoir entré le mdp !
 
Solutions :  

  • Magic quotes sur ON.
  • remplacer les $_GET.. par un mysql_real_escape_string($_GET...)


Avous de citer d'autres failles simples et leurs solutions :)


---------------
Gamertag : Getget94 - PSN : Getget1980 - Nintendo Network : Getget1980 - Uplau : Getget1980
mood
Publicité
Posté le 12-02-2008 à 22:07:46  profilanswer
 

n°1685762
skeye
Posté le 13-02-2008 à 11:36:11  profilanswer
 

getget a écrit :


Solutions :  

  • Magic quotes sur ON.
  • remplacer les $_GET.. par un mysql_real_escape_string($_GET...)



Non.
La bonne solution c'est de toujours vérifier l'input utilisateur et d'utiliser des requêtes préparées.


---------------
Can't buy what I want because it's free -
n°1686028
CyberDenix
Posté le 13-02-2008 à 21:48:05  profilanswer
 

skeye a écrit :

Non.
La bonne solution c'est de toujours vérifier l'input utilisateur et d'utiliser des requêtes préparées.


 
Toutafé !  :sol:  
 
D'ailleurs tu pourrais avoir besoin de ça : http://fr.php.net/pdo


---------------
Directeur Technique (CTO)
n°1686030
skeye
Posté le 13-02-2008 à 21:49:06  profilanswer
 

CyberDenix a écrit :

 

Toutafé !  :sol:

 

D'ailleurs tu pourrais avoir besoin de ça : http://fr.php.net/pdo


...ou au moins mysqli, s'il ne s'agit que de mysql.:o


Message édité par skeye le 13-02-2008 à 21:49:59

---------------
Can't buy what I want because it's free -
n°1686642
getget
Il y en a qui ont essayé ...
Posté le 14-02-2008 à 23:40:51  profilanswer
 

skeye a écrit :


Non.
La bonne solution c'est de toujours vérifier l'input utilisateur et d'utiliser des requêtes préparées.


 
Ces solutions sont données par des tas de sites quand tu tapes SQL Injection dans google :/
Tu entends quoi par utiliser des requêtes préparées ?
 
 

CyberDenix a écrit :


 
Toutafé !  :sol:  
 
D'ailleurs tu pourrais avoir besoin de ça : http://fr.php.net/pdo


 
 
 
 
Là, ca va peut être chercher un peu loin pour les besoins :D


---------------
Gamertag : Getget94 - PSN : Getget1980 - Nintendo Network : Getget1980 - Uplau : Getget1980
n°1686653
leflos5
On est ou on est pas :)
Posté le 15-02-2008 à 00:24:49  profilanswer
 

Non parce que quelque chose de bien fait permet de limiter rapidement les effets de bords et autres trous.
 
Ca va même plus loin que pdo en soit (qui ne sert à rien à par faire chier pour un débat conceptuel stérile...), c'est de l'abstraction sur une appli qui est nécessaire.
 
Donc si utilisation de mysql et mysql seul, autant utiliser mysqli qui sera bien plus efficace que pdo ou mysql et s'en servir intelligement (requête préparées pour filtrer, abstraction)

n°1686661
getget
Il y en a qui ont essayé ...
Posté le 15-02-2008 à 01:14:02  profilanswer
 

Hum, j'ai jeté un œil a mysqli, ça fait peur on dirait de la POO, pas simple quand on est autodidacte et qu'on a  jamais touché à la POO :D
 
A part avoir un niveau d'abstraction supérieur, ça sert à quoi ? (encore PDO je vois à peu près, je peux changer de SGBD sans refaire mon appli), mais mysqli ...


---------------
Gamertag : Getget94 - PSN : Getget1980 - Nintendo Network : Getget1980 - Uplau : Getget1980
n°1686663
getget
Il y en a qui ont essayé ...
Posté le 15-02-2008 à 02:58:29  profilanswer
 

Merci de ton aide quand même ..... Mr "jmelapète" :pfff:
Je te renvoie vers le lien dans ta signature, point 5 et 7 .....

Message cité 1 fois
Message édité par getget le 15-02-2008 à 03:00:27

---------------
Gamertag : Getget94 - PSN : Getget1980 - Nintendo Network : Getget1980 - Uplau : Getget1980
n°1686666
skeye
Posté le 15-02-2008 à 07:22:28  profilanswer
 

getget a écrit :

 

Ces solutions sont données par des tas de sites quand tu tapes SQL Injection dans google :/
Tu entends quoi par utiliser des requêtes préparées ?

 

J'entends par là rendre à la couche de connexion à la base la responsabilité qui lui revient. Echapper les chaines de caractères c'est son boulot - mais évidemment il faut utiliser une couche d'accès à la base qui sait le faire, d'où mysqli ou PDO.

 
getget a écrit :

Hum, j'ai jeté un œil a mysqli, ça fait peur on dirait de la POO, pas simple quand on est autodidacte et qu'on a  jamais touché à la POO :D

 

ça n'a rien d'extraordinairement compliqué. Et on peut y accéder en mode procédural aussi, il me semble.

 

[edit]

 

Après vérification, oui. Il y a des exemples objet et procéduraux pour chaque fonction dans la doc, cf :
http://fr2.php.net/manual/en/funct [...] repare.php

 
getget a écrit :

A part avoir un niveau d'abstraction supérieur, ça sert à quoi ? (encore PDO je vois à peu près, je peux changer de SGBD sans refaire mon appli), mais mysqli ...

 

à avoir la possibilité d'utiliser des requêtes préparées.


Message édité par skeye le 15-02-2008 à 07:24:25

---------------
Can't buy what I want because it's free -
n°1686865
skeye
Posté le 15-02-2008 à 13:11:21  profilanswer
 


 
Naturel ou pas pour toi, il connait le procédural et c'est utilisable en procédural. Le reste on s'en fout.


---------------
Can't buy what I want because it's free -
mood
Publicité
Posté le 15-02-2008 à 13:11:21  profilanswer
 

n°1686972
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 15-02-2008 à 15:42:22  profilanswer
 

Tiens, un lien intéressant sur le top 10 des trous de sécu pour les applis web : http://www.owasp.org/index.php/Top_10_2007


---------------
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.
n°1687011
soju
One shot !
Posté le 15-02-2008 à 16:41:13  profilanswer
 

Pour en revenir aux failles, en voici une qu'on voit de plus en plus et qui me fait bien rire : exemple
 :lol:

n°1687020
krifur
Posté le 15-02-2008 à 17:10:51  profilanswer
 

rhoo tout le bordel qu on trouve avec ca, effectivement c'est drole


Message édité par krifur le 15-02-2008 à 17:10:59
n°1687022
omega2
Posté le 15-02-2008 à 17:14:10  profilanswer
 

soju > C'est une grosse faille si ce sont de vrai script php et que le serveur ne gère pas les extensions multiples. Mais ce n'est qu'une petite faille potentielle (potentielle car les risques dépendent de la dernière modif effectué par le développeur) si le serveur gère les extensions multiples.  
Pour les 4 premiers sites indiqués par google, les .php.bak ont l'air de bien être traité comme de simple fichiers php.

n°1687026
soju
One shot !
Posté le 15-02-2008 à 17:19:34  profilanswer
 

Regarde les autres sites, tu pourras récupérer plein de mots de passe
 
Tout ça pour dire qu'un serveur apache mal configuré + édition des script directement sur le serveur =  :sweat:  
En sécurité même une mini-faille peut être fatale...

n°1687128
CyberDenix
Posté le 15-02-2008 à 20:37:08  profilanswer
 

Ya deux problèmes :
1) Renommer ses fichiers php avec une extension autre que php
2) Oublier d'interdire la visite les repertoires ou de placer un index.php dans ceux-ci


---------------
Directeur Technique (CTO)
n°1687163
naeh
Posté le 15-02-2008 à 22:09:33  profilanswer
 

oula le truc de malade :|
 
perso je fais tout avec symfony maintenat et du coup plus rien a craindre vu que j'y touche meme pas au répertoire web (racine du vhost)
 
comme quoi un framwork ca sert :D

n°1687190
getget
Il y en a qui ont essayé ...
Posté le 15-02-2008 à 23:34:52  profilanswer
 

skeye a écrit :


 
Naturel ou pas pour toi, il connait le procédural et c'est utilisable en procédural. Le reste on s'en fout.


 
Merci, c'est exactement ca, je pourrais apprendre la POO, mais pour UNE appliaction, je n'en vois pas l'utilité.
 

Taiche a écrit :

Tiens, un lien intéressant sur le top 10 des trous de sécu pour les applis web : http://www.owasp.org/index.php/Top_10_2007


 
Merci :)
 

soju a écrit :

Pour en revenir aux failles, en voici une qu'on voit de plus en plus et qui me fait bien rire : exemple
 :lol:


 
Et merci aussi !)


---------------
Gamertag : Getget94 - PSN : Getget1980 - Nintendo Network : Getget1980 - Uplau : Getget1980
n°1687464
getget
Il y en a qui ont essayé ...
Posté le 17-02-2008 à 14:32:53  profilanswer
 

J'ai regardé mysqli, bon, même en OO ca fait pas trop peur, par contre ca alourdit pas mal le code :/
 
Il me semble aussi avoir comprit que ca ne marche pas avec php4 et / ou lysql <4.1 ?


---------------
Gamertag : Getget94 - PSN : Getget1980 - Nintendo Network : Getget1980 - Uplau : Getget1980
n°1687471
leflos5
On est ou on est pas :)
Posté le 17-02-2008 à 14:43:57  profilanswer
 

Ca alourdit rien du tout au lieu d'avoir mysql_* t'as mysqli_* :spamafote:

n°1687543
getget
Il y en a qui ont essayé ...
Posté le 17-02-2008 à 19:44:43  profilanswer
 

Y'a quand même le prepare en plus et les binds... jusque là je faisais du fetch_array ...


---------------
Gamertag : Getget94 - PSN : Getget1980 - Nintendo Network : Getget1980 - Uplau : Getget1980
n°1687545
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 17-02-2008 à 19:52:54  profilanswer
 

getget a écrit :

Y'a quand même le prepare en plus et les binds... jusque là je faisais du fetch_array ...


Bin tu peux continuer à les faire, y a rien de nouveau [:spamafote]


---------------
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.
n°1687550
leflos5
On est ou on est pas :)
Posté le 17-02-2008 à 20:32:32  profilanswer
 

getget a écrit :

Y'a quand même le prepare en plus et les binds... jusque là je faisais du fetch_array ...


 :ouch:  
 
1 ligne en plus pour une requête préparée (qui au passage n'est pas lié à mysqli en réalité)...
 
Et c'est pas obligatoire non plus, faut voir l'usage aussi ;)

n°1687555
getget
Il y en a qui ont essayé ...
Posté le 17-02-2008 à 20:45:53  profilanswer
 

Y'a pas un "bon" site pour passer à mysqli ?
 
J'ai "appris" mysql via phpdebtant.org qui est plutôt bien fait car très abordable, taper direct dans la doc de php c'est un peu "rude" :D


---------------
Gamertag : Getget94 - PSN : Getget1980 - Nintendo Network : Getget1980 - Uplau : Getget1980
n°1687595
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 17-02-2008 à 23:05:26  profilanswer
 

'tain mais y a rien à faire à part rajouter un "i" en fin de mot et éventuellement changer un ou deux paramètres par-ci par-là... et la doc de PHP c'est pas "rude", si tu veux apprendre un langage aussi simple que PHP (surtout sans taper dans la partie POO), c'est le minimum que t'aies à faire.
La programmation de manière générale, ça ne s'improvise pas non plus, le faire en autodidacte est possible mais demande beaucoup d'engagement et de rigueur. Si t'es pas prêt à faire tout ça, alors c'est mal barré.
Je dis pas ça par élitisme ou quoi que ce soit de semblable, mais faut revenir à la réalité ; la prog c'est un métier, ça s'improvise pas, surtout dans le cas des pages web un peu "sensibles" et qu'on s'aventure dans le domaine de la sécurité [:spamafote]


---------------
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.
n°1688086
getget
Il y en a qui ont essayé ...
Posté le 18-02-2008 à 20:29:41  profilanswer
 

Je pense être pas mal capable en procédural, mais mon code est loin d'être optimisé, je demandais juste un site donnant les méthodes à employer plutôt que d'autres that's all :)


---------------
Gamertag : Getget94 - PSN : Getget1980 - Nintendo Network : Getget1980 - Uplau : Getget1980
n°1688155
leflos5
On est ou on est pas :)
Posté le 19-02-2008 à 07:28:15  profilanswer
 

Et bah t'as la réponse :D Après si t'as peur des i ou des requêtes préparées on peut rien pour toi :whistle:

n°1688206
getget
Il y en a qui ont essayé ...
Posté le 19-02-2008 à 09:48:46  profilanswer
 

Non non, pas peur des i ni des requêtes préparées :)
 
Je vais me plonger un peu plus dans la doc php alors ;)


---------------
Gamertag : Getget94 - PSN : Getget1980 - Nintendo Network : Getget1980 - Uplau : Getget1980
n°1689002
getget
Il y en a qui ont essayé ...
Posté le 19-02-2008 à 23:37:51  profilanswer
 

Visiblement, mon serveur utilisé pour les tests sous easyphp ne possède pas le module mysqli :D


---------------
Gamertag : Getget94 - PSN : Getget1980 - Nintendo Network : Getget1980 - Uplau : Getget1980
n°1689018
flo850
moi je
Posté le 20-02-2008 à 01:18:13  profilanswer
 

alors tu commences par virer esayphp et mettre wamp qui est à jour


---------------

n°1689026
leflos5
On est ou on est pas :)
Posté le 20-02-2008 à 05:14:39  profilanswer
 

Ou simplement aller activer l'extension mysqli dansl e php.ini, le début de la prise en main ;)

n°1689029
getget
Il y en a qui ont essayé ...
Posté le 20-02-2008 à 06:51:00  profilanswer
 

Je vais peut être passer à Wamp pendant les vacances, j'en entend que du bien (ce qui n'est pas le cas de easyhp).

 

J'ai un peu peur pour le transfert des bases sql mais bon, y'a pas de raisons, j'ai tout sauvé avec l'utilitaire de mysql "Mysql administrator"


Message édité par getget le 20-02-2008 à 06:51:49

---------------
Gamertag : Getget94 - PSN : Getget1980 - Nintendo Network : Getget1980 - Uplau : Getget1980
n°1689096
flo850
moi je
Posté le 20-02-2008 à 10:04:07  profilanswer
 

meme pas besoin , un simple copier coller de tes bases suffira , si tu veux pas te compliquer la vie

 

a noter quand meme qu'il risquqe d'y avori quelques incompatibilités lors de la montée de version de php et de mysql


Message édité par flo850 le 20-02-2008 à 10:04:46

---------------

n°1689102
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 20-02-2008 à 10:06:27  profilanswer
 

Très franchement, si tu veux mieux apprendre le fonctionnement d'Apache/PHP/MySQL, tente l'installation séparée des composants par toi-même. C'est simple et ça te permettra aussi de voir comment personnaliser ton serveur selon tes besoins.
Les packages prêts à l'emploi comme Easyphp ou Wamp sont certes pratiques à l'install mais ne comportent pas forcément les dernières mises à jour (parfois importantes pour la sécu) et leur configuration de base peut s'avérer trop lourde ou trop légère en fonction de tes besoins.


---------------
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.
n°1689330
leflos5
On est ou on est pas :)
Posté le 20-02-2008 à 14:05:38  profilanswer
 

Surtout que tout existe en .msi maintenant ;)

n°1691470
Profil sup​primé
Posté le 24-02-2008 à 12:18:11  answer
 

http://www.quiappeler.com/index.php?page=index.php  :lol:  
Corrige déjà cette faille. Elle permet de provoquer un 'déni de service'.

n°1691511
leflos5
On est ou on est pas :)
Posté le 24-02-2008 à 14:55:46  profilanswer
 

:lol:

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [PHP/Mysql] Les trous de sécurité de base à éviter

 

Sujets relatifs
[PHP] Création tableur excel dans page webEviter les flashs blancs au chargement des pages
Problème connexion SQLServeur avec PHPpremiers pas en mysql/phpmyadmin/php/etc.
Gestion de base de donnéesvotre avis sur la sécurité de ce script...
commencer le PHP/SQLPetit probléme avec Scipt pour faire des pings en PHP
Mise à jour base données par ajax avec variables POST 
Plus de sujets relatifs à : [PHP/Mysql] Les trous de sécurité de base à éviter


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR