Injections SQL et htmlspecialchars() + sécurité de mon appli - PHP - Programmation
Marsh Posté le 25-02-2008 à 14:16:37
C'est surtout qu'il n'y a pas l'extension mysqli d'installée, nan ?
htmlspecialchars est à ne surtout pas utiliser, parce qu'elle n'escape pas les quotes (') de la même manière qu'il faudrait. Elle va remplacer les quotes par " alors qu'il faut un \'.
Dirige-toi alors vers les PDO (si installé) ou l'extension mysql et la fonction mysql_real_escape_string
Marsh Posté le 25-02-2008 à 14:16:59
non, ça n'a strictement aucun rapport. Le fait même que tu poses cette question montre que tu ne comprends absolument pas les problèmes que ces diverses fonctions tentent de résoudre
FlorentG a écrit : C'est surtout qu'il n'y a pas l'extension mysqli d'installée, nan ? htmlspecialchars est à ne surtout pas utiliser, parce qu'elle n'escape pas les quotes (') de la même manière qu'il faudrait. Elle va remplacer les quotes par " alors qu'il faut un \'. Dirige-toi alors vers les PDO (si installé) ou l'extension mysql et la fonction mysql_real_escape_string |
htmlspecialchars est à ne pas utiliser parce qu'elle n'a aucun putain de rapport avec le SQL surtout
On s'en fout qu'elle escape "caca" ou "culcul"
Marsh Posté le 25-02-2008 à 14:19:10
mysql_real_escape_string => Merci, cette fonction marche...
Marsh Posté le 25-02-2008 à 14:20:24
masklinn a écrit : htmlspecialchars est à ne pas utiliser parce qu'elle n'a aucun putain de rapport avec le SQL surtout |
C'était sous-entendu, fouille-caca
Marsh Posté le 25-02-2008 à 14:25:35
FlorentG a écrit :
|
Vas te faire sous-entendre ailleurs, franchement, tu réponds à un mec qui n'a même pas suffisament lu la doc de php pour réaliser que "htmlspecialchars" ça s'applique dans de la manipulation de html et non dans de la manipulation de sql, qu'est-ce qu'il pourrait bien biter d'un sous-entendu pareil
Surtout quand en réalité ya rien de sous-entendu, juste des trucs qui sont pas dits et une justification totalement foireuse dont tout le monde se contrefout
Marsh Posté le 25-02-2008 à 14:26:54
masklinn a écrit : Vas te faire sous-entendre ailleurs, franchement, tu réponds à un mec qui n'a même pas suffisament lu la doc de php pour réaliser que "htmlspecialchars" ça s'applique dans de la manipulation de html et non dans de la manipulation de sql |
Mais c'est justement ce que je lui explique
Oh et pis merde pourquoi je répond encore
Marsh Posté le 25-02-2008 à 14:28:45
FlorentG a écrit : |
C'est marrant, j'ai compté, le token "html" est présent très exactement 0 fois dans ton post. Idem pour le token "SQL"
Marsh Posté le 25-02-2008 à 14:29:28
masklinn a écrit : C'est marrant, j'ai compté, le token "html" est présent très exactement 0 fois dans ton post. Idem pour le token "SQL" |
Dans htmlspecialchars, y'a 'html' et dans mysql_real_escape_string, y'a 'sql'. J'y peux rien si ton parser est merdique
Marsh Posté le 25-02-2008 à 14:37:05
FlorentG a écrit : |
Je crois que t'as du mal avec le concept de "token"
En même temps, tu viens de PHP donc ça m'étonne pas tant que ça
Marsh Posté le 25-02-2008 à 14:38:28
masklinn a écrit : Je crois que t'as du mal avec le concept de "token" |
Bon ok, peut-être que j'ai pas été assez explicite dans mon post, peut-être que j'ai oublié de mentionné le rôle clair de chaque fonction. Mais au moins j'ai expliqué par un cas concret pourquoi c'était pas bien ce qu'il faisait. Après désolé de pas avoir ta rigueur légendaire
Marsh Posté le 25-02-2008 à 14:40:59
FlorentG a écrit : |
C'est pas un problème de rigueur ou de clarté, mais de réponse qui n'a aucun rapport avec l'expréssion des besoins
Marsh Posté le 25-02-2008 à 14:42:11
masklinn a écrit : mais de réponse qui n'a aucun rapport avec l'expréssion des besoins |
Whut ? Je lui ai expliqué pourquoi ça allait pas, les raisons pour lesquelles la fonction qu'il voulait utiliser n'était pas dispo, et quelle fonction utiliser à la place. J'vois pas en quoi il n'y a aucun rapport avec ses besoins...
Marsh Posté le 26-02-2008 à 10:31:04
Non mais vous avez pas bientôt fini, vous deux?
Toujours en train de vous chamailler. On dirait les deux vieux du muppet show.
L'auteur du post, ça fait longtemps qu'il est parti, tout content avec sa belle appli PHP passoire standard qui fera grossir les stats OWASP.
Marsh Posté le 26-02-2008 à 17:45:00
sircam a écrit : Non mais vous avez pas bientôt fini, vous deux? Toujours en train de vous chamailler. On dirait les deux vieux du muppet show. L'auteur du post, ça fait longtemps qu'il est parti, tout content avec sa belle appli PHP passoire standard qui fera grossir les stats OWASP. |
Bon au lien de vous engueuler pour rien, dites-moi plutôt si il y a des problèmes de sécurité maintenant :
Index (index.php):
Code :
|
Connexion (connect.php)
Code :
|
Inscription (register.php)
Code :
|
EDIT : fermeture d'une Div (pourtant la page était valide XHTML Transitional )
Marsh Posté le 26-02-2008 à 18:56:50
C'est pas qu'il y a des problèmes de sécurité, mais c'est le bordel à mort Y'a tout qui est mélangé, et y'a plein de tableaux
Marsh Posté le 26-02-2008 à 19:03:24
Oui parce que 1 il est douteux et 2 il est pas séparé du php!
Edit :
Pourquoi faire du SELECT * pour ne récupérer qu'une seule donnée?!
Et puis coller des exit(); après des header('location: ...'); parce qu'a priori c'est plus la peine d'envoyer le contenu de la page!
Edit2:
Ouai en fait ya le php qui va pas non plus globalement, parce que des conditions de ce genre c'est louche :
if(!empty($_POST['pseudo']) || !empty($_POST['password']))
Edit3:
Non et puis c'est quoi ce test pour vérifier si le pseudo est déjà pris?! T'as jamais entendu parler de mysql_num_rows()?
Marsh Posté le 26-02-2008 à 19:06:26
Non c'est le php
Edit : J'éclaire mes dires : http://forum.hardware.fr/forum2.ph [...] w=0&nojs=0 Le MVC
Edit 2 : if(!empty($_POST['pseudo']) || !empty($_POST['password'])) cette condition vérifie que les champs ne sont pas vides non ? pourquoi ne pas plutot faire un test si les champs sont vides et retourner un message d'erreur dans le cas ou ?
Marsh Posté le 26-02-2008 à 19:13:01
Ouai enfin sans dire d'aller jusqu'au MVC, un peu de séparation ça fait pas d'mal.
Et puis un peu de logique non plus hein
La condition sus cité, vérifie si l'un ou l'autre champ n'est pas vide. En toute logique on test si les deux ne sont pas vides.
Marsh Posté le 26-02-2008 à 19:16:48
Son site semble un projet voué à accueillir des inscriptions de membres etc... Séparer les couches ce serait pas mal
Citation : |
Un login foirera dès qu'un des deux champs est vide non ?
Marsh Posté le 26-02-2008 à 19:19:53
Excusez moi mais c'est ma première appli qui utilise MySql :|
Citation : |
Ok
Citation : |
Non.
Marsh Posté le 26-02-2008 à 19:23:24
med365 a écrit : Son site semble un projet voué à accueillir des inscriptions de membres etc... Séparer les couches ce serait pas mal
|
Si tu regardes bien, son code vérifie le pseudo et ajoute le compte si un des deux champs est rempli.
Ça veut dire que si seul le mot de passe est rempli ou va pouvoir créer un compte dont le pseudo est vide.
http://fr.php.net/mysql_num_rows
Une query style SELECT machin FROM truc WHERE pseudo = [pseudo-saisi]
Ensuite
if(mysql_num_rows($query)==0) on insert
else on gueule pseudo déjà pris
Marsh Posté le 26-02-2008 à 19:32:04
Connexion MySQL (mysql.php)
http://www.miraclesalad.com/webtoo [...] ?clip=1111
Index (index.php) :
http://www.miraclesalad.com/webtoo [...] ?clip=1113
Connexion (connect.php)
http://www.miraclesalad.com/webtoo [...] ?clip=1112
Inscription (register.php)
http://www.miraclesalad.com/webtoo [...] ?clip=1114
Marsh Posté le 27-02-2008 à 14:53:31
Euh... Tu peux utiliser des trucs comme les clipboards en ligne pour poster des pages entières stp ?
Y en a une de bien : http://www.miraclesalad.com/webtools/clip.php
++
Marsh Posté le 27-02-2008 à 15:17:20
Commence peut-être par réduire la portée en ne gardant que ce qui est nécessaire.
http://forum.hardware.fr/hfr/Progr [...] m#t1654270
Citation : Il n'est pas rare que quelqu'un poste un "script" ou un "bout de code" de plusieurs centaines de lignes, en demandant à la communauté d'identifier ce qui ne va pas. Un tel pavé est rebutant et risque même de détourner des personnes motivées de votre problème. |
Marsh Posté le 27-02-2008 à 16:10:55
Je ne comprends pas pourquoi le système est lent... Pourtant d'habitude PHP est assez rapide sur mon site!
Voila ! (j'ai aussi édité mon post plus haut)
Marsh Posté le 25-02-2008 à 14:14:14
Bonjour, comme la version de PHP de mon site ne reconnait ni :
-mysqli_escape_string ni
-mysqli_real_escape_string,
je vais utiliser htmlspecialchars. Est-ce suffisant ?
Message édité par Profil supprimé le 26-02-2008 à 18:45:18