Les trous de sécurité de base à éviter [PHP/Mysql] - PHP - Programmation
Marsh Posté le 13-02-2008 à 11:36:11
getget a écrit :
|
Non.
La bonne solution c'est de toujours vérifier l'input utilisateur et d'utiliser des requêtes préparées.
Marsh Posté le 13-02-2008 à 21:48:05
skeye a écrit : Non. |
Toutafé !
D'ailleurs tu pourrais avoir besoin de ça : http://fr.php.net/pdo
Marsh Posté le 13-02-2008 à 21:49:06
CyberDenix a écrit : Toutafé ! 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.
Marsh Posté le 14-02-2008 à 23:40:51
skeye 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 ?
CyberDenix a écrit : |
Là, ca va peut être chercher un peu loin pour les besoins
Marsh Posté le 15-02-2008 à 00:24:49
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)
Marsh Posté le 15-02-2008 à 01:14:02
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
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 ...
Marsh Posté le 15-02-2008 à 02:58:29
Merci de ton aide quand même ..... Mr "jmelapète"
Je te renvoie vers le lien dans ta signature, point 5 et 7 .....
Marsh Posté le 15-02-2008 à 07:22:28
getget a écrit : Ces solutions sont données par des tas de sites quand tu tapes SQL Injection dans google |
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 |
ç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.
Marsh Posté le 15-02-2008 à 13:11:21
Naturel ou pas pour toi, il connait le procédural et c'est utilisable en procédural. Le reste on s'en fout.
Marsh Posté le 15-02-2008 à 15:42:22
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
Marsh Posté le 15-02-2008 à 17:10:51
rhoo tout le bordel qu on trouve avec ca, effectivement c'est drole
Marsh Posté le 15-02-2008 à 17:14:10
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.
Marsh Posté le 15-02-2008 à 17:19:34
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 =
En sécurité même une mini-faille peut être fatale...
Marsh Posté le 15-02-2008 à 20:37:08
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
Marsh Posté le 15-02-2008 à 22:09:33
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
Marsh Posté le 15-02-2008 à 23:34:52
skeye a écrit : |
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 |
Et merci aussi !)
Marsh Posté le 17-02-2008 à 14:32:53
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 ?
Marsh Posté le 17-02-2008 à 14:43:57
Ca alourdit rien du tout au lieu d'avoir mysql_* t'as mysqli_*
Marsh Posté le 17-02-2008 à 19:44:43
Y'a quand même le prepare en plus et les binds... jusque là je faisais du fetch_array ...
Marsh Posté le 17-02-2008 à 19:52:54
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
Marsh Posté le 17-02-2008 à 20:32:32
getget a écrit : Y'a quand même le prepare en plus et les binds... jusque là je faisais du fetch_array ... |
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
Marsh Posté le 17-02-2008 à 20:45:53
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"
Marsh Posté le 17-02-2008 à 23:05:26
'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é
Marsh Posté le 18-02-2008 à 20:29:41
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
Marsh Posté le 19-02-2008 à 07:28:15
Et bah t'as la réponse Après si t'as peur des i ou des requêtes préparées on peut rien pour toi
Marsh Posté le 19-02-2008 à 09:48:46
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
Marsh Posté le 19-02-2008 à 23:37:51
Visiblement, mon serveur utilisé pour les tests sous easyphp ne possède pas le module mysqli
Marsh Posté le 20-02-2008 à 01:18:13
alors tu commences par virer esayphp et mettre wamp qui est à jour
Marsh Posté le 20-02-2008 à 05:14:39
Ou simplement aller activer l'extension mysqli dansl e php.ini, le début de la prise en main
Marsh Posté le 20-02-2008 à 06:51:00
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"
Marsh Posté le 20-02-2008 à 10:04:07
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
Marsh Posté le 20-02-2008 à 10:06:27
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.
Marsh Posté le 24-02-2008 à 12:18:11
http://www.quiappeler.com/index.php?page=index.php
Corrige déjà cette faille. Elle permet de provoquer un 'déni de service'.
Marsh Posté le 12-02-2008 à 22:07:46
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 :
Avous de citer d'autres failles simples et leurs solutions
---------------
Gamertag : Getget94 - PSN : Getget1980 - Nintendo Network : Getget1980 - Uplau : Getget1980