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

 


 Mot :   Pseudo :  
 
 Page :   1  2  3  4
Auteur Sujet :

Help site 'piraté'

n°1364456
FlorentG
Unité de Masse
Posté le 11-05-2006 à 17:11:00  profilanswer
 

Reprise du message précédent :
Pour ça, toujours faire gaffe aux messages d'erreurs affichés par l'appli...


Message édité par FlorentG le 11-05-2006 à 17:11:09
mood
Publicité
Posté le 11-05-2006 à 17:11:00  profilanswer
 

n°1364653
Djebel1
Nul professionnel
Posté le 11-05-2006 à 21:20:59  profilanswer
 

et là en l'occurence, un coup d'htmlentities te protège non ?
 
edit : mais en fait y a un truc que je comprends pas. Là tu fais exécuter du javascript sur ta propre machine, en quoi c'est une faille ? Comment tu pourrais baiser une autre personne que toi ? Comment est-ce intégrer par le serveur quoi ?
 
>Unix Code Execution
Vous avez des détails là dessus ?

Message cité 1 fois
Message édité par Djebel1 le 11-05-2006 à 21:48:40
n°1364674
FlorentG
Unité de Masse
Posté le 11-05-2006 à 22:17:58  profilanswer
 

Djebel1 a écrit :

et là en l'occurence, un coup d'htmlentities te protège non ?


Faut voir si html machin escape aussi les retour chariots  
 

Djebel1 a écrit :

edit : mais en fait y a un truc que je comprends pas. Là tu fais exécuter du javascript sur ta propre machine, en quoi c'est une faille ? Comment tu pourrais baiser une autre personne que toi ? Comment est-ce intégrer par le serveur quoi ?


Ca repose un peu sur du bol, effectivement :D En fait, faudrait faire comme ça :

  • Le site repose sur les cookie pour identifier un gars, et ne fait pas plus de vérifications ou de trucs spéciaux
  • Le gars se logge en administrateur sur son site, et fait des trucs
  • Toi de ton côté, tu piges la faille, et t'envoi au mec l'url spécial en disant genre "y'a un truc louche sur ton site là, clique sur ce lien pour voir"
  • Le gars clique (il est toujours loggé), et hop, le p'tit script récupère document.cookie (et ton le session id + le reste), et envoi tout ça chez toi
  • Et hop, t'as plus qu'a te faire passer pour l'administrateur maintenant que t'as un session id qui va bien


C'est un peu de bol qu'il faut avoir, mais y'a moyen :)

n°1364679
Djebel1
Nul professionnel
Posté le 11-05-2006 à 22:24:15  profilanswer
 

oki merci ^^

FlorentG a écrit :

Faut voir si html machin escape aussi les retour chariots


Dans le pire des cas, à part faire planter le script ça ferait une faillle de sécu de pas échapper les retours chariots ? (ça les échappe pas, puisque nl2br(htmlentities($tavar)), ça met bien des <br /> à la place des retours chariots :p)

FlorentG a écrit :

Ca repose un peu sur du bol, effectivement :D


oki ^^
et le HTTP Response Splitting c'est le même principe ? c'est seulement en filant le lien a quelqu'un que tu le couillones ? (j'ai pas l'impression, puisque tu peux jouer sur le cache etc ...)


Message édité par Djebel1 le 11-05-2006 à 22:24:57
n°1364681
FlorentG
Unité de Masse
Posté le 11-05-2006 à 22:25:46  profilanswer
 

Ouais voilà, c'est un peu le même principe, au final, c'est aussi une faille de type XSS

n°1364683
Djebel1
Nul professionnel
Posté le 11-05-2006 à 22:31:44  profilanswer
 

et pour les retours chariots, en quoi ça peut être une faille de sécu pour toi ?

n°1364684
FlorentG
Unité de Masse
Posté le 11-05-2006 à 22:32:39  profilanswer
 

C'est justement ce qui permet de séparer les différents headers, et donc d'injecter ceux qu'on veut (genre du coup en modifiant un 302 redirect en 200 ok)

n°1364687
Djebel1
Nul professionnel
Posté le 11-05-2006 à 22:36:03  profilanswer
 

oki pour les headers.
 
je parlais des failles XSS javascript que vous aviez montré, là je voyais pas bien où était le problème.
merci pour toutes ces précisions.


Message édité par Djebel1 le 11-05-2006 à 22:36:17
n°1364695
The-Shadow
Développeur
T'as été voir dans ton profil?
Posté le 11-05-2006 à 22:48:35  profilanswer
 

FlorentG a écrit :

Faut voir si html machin escape aussi les retour chariots


Comment tu crois que j'ai corrigé la faille que tu m'as signalé hier en une seconde et demi ? :D

n°1364698
Djebel1
Nul professionnel
Posté le 11-05-2006 à 22:50:27  profilanswer
 

ça les échappe pas. Fais echo htmlentities("bla\r\nye\r\n" ); et regarde le code source, tu vois bien qu'il y a des retours à la ligne
(et sur la page tu ne vois pas les \r\n en plus)
 
Comme dit précédemment, pour les retours chariots faut y aller à coup de str_replace (mais les retours chariot posent problème seulement si tu inclues l'input dans un header, sinon on s'en tape. Parce que sinon la seule faille c'est si tu utilisais un nl2br dessus, auquel cas y aura plein de <br /> dans la page :D)

Message cité 1 fois
Message édité par Djebel1 le 11-05-2006 à 22:55:19
mood
Publicité
Posté le 11-05-2006 à 22:50:27  profilanswer
 

n°1364701
The-Shadow
Développeur
T'as été voir dans ton profil?
Posté le 11-05-2006 à 22:55:40  profilanswer
 

Djebel1 a écrit :

ça les échappe pas. Fais echo htmlentities("bla\r\nye\r\n" ); et regarde le code source, tu vois bien qu'il y a des retours à la ligne
(et sur la page tu ne vois pas les \r\n en plus)


Non, moi quand Florent parlait des html escape machin, je croyais qu'il parlait de mres. Moi je parse tout ce qui rentre (ou presque, j'ai des vieux bout de scripts qui oublient comme l'a montré florentG hier soir) par un mres.
 
 
P.S.: mres=>Mysql real escape string.

n°1364704
Djebel1
Nul professionnel
Posté le 11-05-2006 à 23:00:55  profilanswer
 

non mais attends, mysql_real_escape_string faut l'utiliser uniquement pour utiliser l'input dans une requête mysql ...
En plus ça nécessite une connexion mysql pour le faire, ce qui implique de la démarrer même si tu en as pas besoin. Donc c'est nawak ^^
Comme son nom l'indique, c'est pour ... mysql ;) Ca regarde l'encodage de ta base, les caractères spéciaux de ta base, tout ça tout ça, pour échapper ce qui va bien pour ta base
 
Pour afficher un input d'utilisateur dans une page html =>
htmlentities($tavar, ENT_QUOTES, 'UTF-8');
y a rien de tel ^^
 
Et comme dit en dessous, pour les header, un coup de str_replace. Va pas utiliser mysql_real_escape_string à tout va :p

Message cité 1 fois
Message édité par Djebel1 le 11-05-2006 à 23:11:55
n°1364706
FlorentG
Unité de Masse
Posté le 11-05-2006 à 23:05:54  profilanswer
 

Je parlais, pour un header location, de faire un str_replace, parce que htmlentities laisse les retours chariots intacts, ce qui peut poser problème

n°1364722
The-Shadow
Développeur
T'as été voir dans ton profil?
Posté le 11-05-2006 à 23:40:06  profilanswer
 

Djebel1 a écrit :

non mais attends, mysql_real_escape_string faut l'utiliser uniquement pour utiliser l'input dans une requête mysql ...
En plus ça nécessite une connexion mysql pour le faire, ce qui implique de la démarrer même si tu en as pas besoin. Donc c'est nawak ^^


Bah non, c'est pas nawak, j'ai toujours une bdd d'ouverte de toutes façons, ne serais-ce que pour l'enregistrement des statistiques de visite.
 

Djebel1 a écrit :


Comme son nom l'indique, c'est pour ... mysql ;) Ca regarde l'encodage de ta base, les caractères spéciaux de ta base, tout ça tout ça, pour échapper ce qui va bien pour ta base


Ouai, sauf que comme par hasard, ça corrige aussi les failles dans PHP.
 

Djebel1 a écrit :


Pour afficher un input d'utilisateur dans une page html =>
htmlentities($tavar, ENT_QUOTES, 'UTF-8');
y a rien de tel ^^
 
Et comme dit en dessous, pour les header, un coup de str_replace. Va pas utiliser mysql_real_escape_string à tout va :p


Je m'en fous, ma base est ouverte, donc je fais un mres et ça me transcrit mon texte pour corriger toutes les failles MySQL et comme par hasard, ça correspond aux failles PHP.  [:airforceone]  
 
Après, bien sûr que j'utilise un htmlentities pour afficher les infos, je parle de la réception bien entendue avec mres, lorsque ça arrive dans ton script, pas de la sortie, parce que htmlentities n'a aucun effet sur les "entrées", à moins que tu enregistres bizarrement dans ta bdd.

n°1364728
Djebel1
Nul professionnel
Posté le 11-05-2006 à 23:56:12  profilanswer
 

ouais enfin, après ton input il est "corrompu", t'es obligé de faire un coup de stripslashes pour afficher l'input de l'utilisateur, sans avoir la garantie que ça correspondra aux caractères d'échappement de la base de données ... Donc au cas réafficher de la merde.
 
Je reste persuader que c'est également nase en terme de performance puisque :  
- à chaque appel de mysql_real_escape_string on va demander à la base qu'est-ce qu'il faut échapper.
- en utilisant bien les sessions, y a plein de pages où t'as aucunement besoin de connexions mysql (bon ça après tu fais ce que tu veux). Enfin imagine un jour que tu fasses une page sans connexion mysql requise, tu vas en rajouter une pour rien ...
ou imagine une page où tu fais une seule requête au tout début de la page, et plus aucune après, dans ce cas tu ferme la connexion avant la fin du script ...
en terme d'économie de nbre de connexions, on peut mieux faire ;)
 
Limite c'est comme si t'activais une espèce de magic_quote, mais même pas adapté au PHP ... (c'est pas parce que ça marche avec ta base actuelle, dans cet encodage et cette config, que ça sera toujours le cas).
Je sais pas pour toi, mais moi perso le magic_quote je m'en sers pas ...
alors un magic_quote pas adapté, encore moins :p
 

Citation :

pour corriger toutes les failles MySQL et comme par hasard, ça correspond aux failles PHP


par hasard, en effet ...
 
C'est un peu comme pour le xhtml, où on t'explique qu'il y a une sémantique, qu'il faut pas utiliser n'importe quoi n'importe où. Là c'est pareil. C'est pas fait pour ça c'est tout.
Imagine demain y a une nouvelle fonctionnalité de mysql, qui demande d'échapper un caractère qui ne l'était pas avant, pas corrigé par stripslashes, etc, etc

Message cité 1 fois
Message édité par Djebel1 le 12-05-2006 à 00:07:39
n°1364734
The-Shadow
Développeur
T'as été voir dans ton profil?
Posté le 12-05-2006 à 01:12:17  profilanswer
 

Djebel1 a écrit :

ouais enfin, après ton input il est "corrompu", t'es obligé de faire un coup de stripslashes pour afficher l'input de l'utilisateur, sans avoir la garantie que ça correspondra aux caractères d'échappement de la base de données ... Donc au cas réafficher de la merde.


Sauf que même sans mres, tu devrais le faire, donc exemple mort. Essaye donc de faire un <input type="text" value="toto c'est le "meilleur" du monde" /> tu vas rigoler.
 

Djebel1 a écrit :


Je reste persuader que c'est également nase en terme de performance puisque :  
- à chaque appel de mysql_real_escape_string on va demander à la base qu'est-ce qu'il faut échapper.


C'est ridicule le temps perdu à compter, je le sais, je l'ai compté.
 

Djebel1 a écrit :


- en utilisant bien les sessions, y a plein de pages où t'as aucunement besoin de connexions mysql (bon ça après tu fais ce que tu veux). Enfin imagine un jour que tu fasses une page sans connexion mysql requise, tu vas en rajouter une pour rien ...


Je n'imagine rien, je ne développe pas sur des probabilités mais sur du concret, c'est évident que sans connexion MySQL, je ne vais pas en pondre une juste pour ça, dans ce cas là, je serais créatif, j'improviserais. :)
 

Djebel1 a écrit :


ou imagine une page où tu fais une seule requête au tout début de la page, et plus aucune après, dans ce cas tu ferme la connexion avant la fin du script ...
en terme d'économie de nbre de connexions, on peut mieux faire ;)
 
Limite c'est comme si t'activais une espèce de magic_quote, mais même pas adapté au PHP ... (c'est pas parce que ça marche avec ta base actuelle, dans cet encodage et cette config, que ça sera toujours le cas).
Je sais pas pour toi, mais moi perso le magic_quote je m'en sers pas ...
alors un magic_quote pas adapté, encore moins :p


ça marchera toujours sur ma config actuelle, je loue un dédié pour m'autoriser cette liberté. Quand aux magic quote, ils sont activés pas PHP et inactivés par Apache chez moi, ce n'est pas optimal, ça fait partie de mes "libertés".
 

Djebel1 a écrit :


Imagine demain y a une nouvelle fonctionnalité de mysql, qui demande d'échapper un caractère qui ne l'était pas avant, pas corrigé par stripslashes, etc, etc


J'imagine rien, imagine demain PHP6 sort et plus aucun de tes scripts n'est compatible. Imagine que demain ton htmlentities ne fonctionne plus sous PHP 6, imagine qu'en 2035, les datetimes dans ta bdd ne seront plus valable, tu vas réécrire tes scripts demain maintenant que tu sais qu'ils ne fonctionneront plus en 2035 ? :D
 
Enfin voilà quoi, je donne ma méthode, une fois de plus on est pas d'accord avec moi, tant pis, chacun ses choix, mais n'essayez pas de me décourager, ça ne sert à rien, quand je me permet de donner une de mes méthodes sur HFR, c'est qu'elle a fait ses preuves et qu'elle fonctionne bien pour moi, point, après, qu'on soit d'accord avec moi ou pas, arrêtez de trouver des trucs bidons pour me faire croire que ce n'est pas valable.

n°1364738
Djebel1
Nul professionnel
Posté le 12-05-2006 à 01:56:18  profilanswer
 

Et tu veux pas recoder une lib PHP histoire d'être sur de pas utiliser les outils adaptés à une tache ? ;)
Je pensais que l'argument de la sémantique xhtml allait te parler et l'emporter :p

The-Shadow a écrit :

Sauf que même sans mres, tu devrais le faire, donc exemple mort. Essaye donc de faire un <input type="text" value="toto c'est le "meilleur" du monde" /> tu vas rigoler.


c'est toi qui rigole j'espère. Si je dois faire ce que tu décris, j'utilise les outils faits pour (tu ne veux pas comprendre que tu n'as aucune garantie que ton stripslashes annulera bien les échappements de mysql_real_escape_string) :  

Code :
  1. $var = 'bla "meilleur" du monde';
  2. echo ' <input type="text" value="', htmlentities($var), '" />';


Hop, aucun souci, même pas besoin de stripslashes.
Si jamais tu as peur de mettre des simples quote pour délimiter value, tu passe le paramètre ENT_QUOTES à htmlentities. Personnellement, j'utilise cette fonction :  

Code :
  1. function htmlFilter($value)
  2. {
  3.    // Stripslashes
  4.    if (get_magic_quotes_gpc()) {
  5.      $value = stripslashes($value);
  6.    }
  7.     return htmlentities($value, ENT_QUOTES, 'UTF-8');
  8. }


Le pire, c'est que même ça ça te garantit pas une sécurité absolue, mais déjà bien plus clair, réutilisable, et sécurisé pour un affichage html que mysql_real_escape_string.

The-Shadow a écrit :

Je n'imagine rien, je ne développe pas sur des probabilités mais sur du concret, c'est évident que sans connexion MySQL, je ne vais pas en pondre une juste pour ça, dans ce cas là, je serais créatif, j'improviserais. :)


Il est où le concret, à ne pas vouloir utiliser les outils dédiées à une tache, et à utiliser des solutions qui devront être bidouillées en fonction du contexte, pour "improviser" ?
 

The-Shadow a écrit :

une fois de plus on est pas d'accord avec moi ... arrêtez de trouver des trucs bidons pour me faire croire que ce n'est pas valable.


y a ptet des raisons ? :D
Après tu as raison, chacun fait comme il veut.


Message édité par Djebel1 le 12-05-2006 à 02:12:46
n°1364821
FlorentG
Unité de Masse
Posté le 12-05-2006 à 10:10:10  profilanswer
 

The-Shadow a écrit :

Non, moi quand Florent parlait des html escape machin, je croyais qu'il parlait de mres. Moi je parse tout ce qui rentre (ou presque, j'ai des vieux bout de scripts qui oublient comme l'a montré florentG hier soir) par un mres.
 
 
P.S.: mres=>Mysql real escape string.


Ok je viens de tout capter la discussion. C'est super pas bien d'utiliser mysql_real_escape_string pour tout filter !!!
 
Y'a 2 cas :

  • Insertion dans une base

Là on utilise MRES, vu que c'est la meilleure méthode pour escaper pour Mysql, sachant que ça prend en compte aussi le charset

  • Affichage sur la page

Là c'est plus du tout MRES qu'il faut utiliser, mais htmlspecialchars (avec le paramètre ENT_QUOTES si on affiche dans un attribut, et ENT_NOQUOTES si on affiche dans un élément normal
 
Notez donc qu'il faut toujours avoir des valeurs dans slash ni rien à la base, sinon on risque de faire foirer pas mal de trucs. Donc il faut toujours récupérer des trucs comme ça :

function var_post($var) {
  if(isset($_POST[$var])) {
 
    if(get_magic_quotes_gpc()) {
      return stripslashes($_POST[$var]);
   } else {
      return $_POST[$var];
   }
  }
}


Il faut toujours des valeurs vierges dans tous les cas, qu'on escapera suivant les cas en temps réel, sinon choc nucléaire certain
 

n°1364857
The-Shadow
Développeur
T'as été voir dans ton profil?
Posté le 12-05-2006 à 10:42:16  profilanswer
 

Je n'utilise pas mres pour l'affichage.  :pt1cable:  
 
Je l'utilise pour toutes les entrées que peut faire le visiteur ou que peut "modifier" le visiteur (comme tu l'as fait pour redirect.php) après, que ça aille dans une bdd ou pas, peu m'importe et je désactive systématiquement les magic_quote via apache.

n°1364862
FlorentG
Unité de Masse
Posté le 12-05-2006 à 10:44:22  profilanswer
 

Ouais mais si tu fait un mres, et qu'après tu affiche, ça foire, non ?

n°1364877
The-Shadow
Développeur
T'as été voir dans ton profil?
Posté le 12-05-2006 à 10:52:24  profilanswer
 

FlorentG a écrit :

Ouais mais si tu fait un mres, et qu'après tu affiche, ça foire, non ?


j'ai une fonction basique qui me fait la totale pour l'affichage, stripslashes, htmlentities, nl2br, etc.  [:airforceone]  

n°1364904
FlorentG
Unité de Masse
Posté le 12-05-2006 à 11:01:31  profilanswer
 

okay okay okay okay [:dawa] C'est bien :D

n°1364925
The-Shadow
Développeur
T'as été voir dans ton profil?
Posté le 12-05-2006 à 11:14:37  profilanswer
 

Bah c'est bien et le fait de passer toutes les entrées utilisateurs par un mres même quand ça ne va pas dans une bdd, ça permet d'utiliser toujours la même routine quelquesoit la chose à afficher, entrée utilisateur direct ou récupération dans la bdd vu que les slashs sont toujours au même endroit. :D
Heureusement, car dans un script, on peut coder une partie qui va gérer l'affichage dont les données entrantes ne "regardent pas" le script d'affichage. Donc en passant par un mres quoiqu'il arrive, les données subiront le même traitement qu'elles soient entrée en direct par le visiteur ou récupérer dans une bdd.


Message édité par The-Shadow le 12-05-2006 à 11:15:09
n°1365129
Djebel1
Nul professionnel
Posté le 12-05-2006 à 14:47:28  profilanswer
 

sauf que ça sert strictement à kedalle de faire un "mres" si ça va pas dans une bdd ... le seul autre cas où ça t'as été utile, c'est pour la faille des headers, et un str_replace suffit.  
Et comme j'ai déjà dis 20 fois (après j'arrête), stripslahes n'est pas "l'inverse" de mres, enfin bon ...
 
edit : t'es en train de dire que tu fais un mres sur les données qui sortent de la bdd ??  :??:  :heink:


Message édité par Djebel1 le 12-05-2006 à 14:48:36
n°1365157
The-Shadow
Développeur
T'as été voir dans ton profil?
Posté le 12-05-2006 à 15:00:47  profilanswer
 

Non justement, je fais un mres sur toutes les données entrés par l'utilisateur, c'est clair pourtant non ?
 
L'affichage, c'est complètement autre chose.

n°1365173
Djebel1
Nul professionnel
Posté le 12-05-2006 à 15:12:27  profilanswer
 

The-Shadow a écrit :

c'est clair pourtant non ?


non justement :D
tu m'as mis le doute avec

Citation :

Donc en passant par un mres quoiqu'il arrive, les données subiront le même traitement qu'elles soient entrée en direct par le visiteur ou récupérer dans une bdd.


je me disais que effectivement, tu fais ce que tu veux avec tes input, mais là je comprenais pas bien :D

n°1365189
The-Shadow
Développeur
T'as été voir dans ton profil?
Posté le 12-05-2006 à 15:21:38  profilanswer
 

Oui, la routine qui affiche les données est la même que ce soit entrée par le visiteur ou récupérer d'une bdd, mais c'est pas un mres, c'est la fonction que j'ai décrite plus haut qui fait un stripslashes, htmlentities, nl2br, etc.
 
Par contre, du coup, je fais un mres sur toutes les données pouvant être entrée ou fournie par un visiteur, car même si je ne le rentre pas dans une bdd, j'utilise la même fonction de réaffichage.
 
Exemple :
j'ai un formulaire avec 2 champs post, pseudo, email, la page qui reçoit va directement faire un mres dessus et ensuite va tester leur validité, ça limite les failles par la suite si je rentre dans une bdd et ça limite les failles PHP (oui oui, PHP aussi peut avoir des failles).
Bien sûr, il faut une connexion bdd, mais en tant machine, ça ne prend que dalle, le mres a juste besoin d'une connexion mysql pour savoir quel codage "protéger", mais ça ne représente pas une requête en temps.

n°1365212
Djebel1
Nul professionnel
Posté le 12-05-2006 à 15:37:33  profilanswer
 

bah je reste complètement opposé à ta solution, mais comme on changera pas d'avis ni toi ni moi, et que de toute façon tu fais ce que tu veux ... ;)
ce qui est sur (histoire qu'on reste en bon terme lol), c'est que c'est mieux que rien ! ^^

n°1365216
FlorentG
Unité de Masse
Posté le 12-05-2006 à 15:41:54  profilanswer
 

The-Shadow a écrit :

Bien sûr, il faut une connexion bdd, mais en tant machine, ça ne prend que dalle


Au contraire, ça bouffe à mort, sans parler du risque d'attendre le nombre max de connexions authorisé :(

n°1365222
The-Shadow
Développeur
T'as été voir dans ton profil?
Posté le 12-05-2006 à 15:43:50  profilanswer
 

Je ne vois pas pourquoi tu "restes complètement opposé" à ma solution.
Que tu ne l'adoptes pas ou que tu ne la comprennes pas, à la limite, mais que tu sois opposé sachant qu'elle n'a aucun inconvénient et que des avantages, je pige pas.
 
Ha si, son seul inconvénient, c'est d'avoir une connexion mysql ouverte.
Enfin, rien que pour le compteur de visite, j'ai toujours une connexion ouverte sur mes pages de toutes façons.

n°1365223
The-Shadow
Développeur
T'as été voir dans ton profil?
Posté le 12-05-2006 à 15:44:24  profilanswer
 

FlorentG a écrit :

Au contraire, ça bouffe à mort, sans parler du risque d'attendre le nombre max de connexions authorisé :(


Preuve que ça bouffe à mort ?
J'ai testé, ça bouffe que dalle.

n°1365226
FlorentG
Unité de Masse
Posté le 12-05-2006 à 15:46:17  profilanswer
 

Ca dépend ce que t'as testé : temps processeur, ou temps d'exécution totale du script

n°1365231
Djebel1
Nul professionnel
Posté le 12-05-2006 à 15:47:54  profilanswer
 

The-Shadow a écrit :

mais que tu sois opposé sachant qu'elle n'a aucun inconvénient et que des avantages, je pige pas.


ça fait 20 fois que je te sors tous les inconvénients, alors que ça n'a aucun avantage :  
 
- stripslashes n'inversera pas mres en fonction de la config de la base
- tu bouffes une connection, et tu interroges la base pour avoir le charset etc, pour rien.
- ce n'est pas fait pour ça. Si un jour tu bosses en collaboration, tes collègues ils l'auront mauvaises de devoir utiliser mres ^^
 
Enfin relis mes posts quoi :p et donc OUI, je suis complètement opposé à ta solution ^^

Message cité 1 fois
Message édité par Djebel1 le 12-05-2006 à 15:49:37
n°1365232
The-Shadow
Développeur
T'as été voir dans ton profil?
Posté le 12-05-2006 à 15:48:19  profilanswer
 

Et pour ne pas parler dans le vide, testez donc ça :

Code :
  1. <?php
  2. $mysql_host = 'localhost'; // entrer vôtre hote ici
  3. $mysql_user = 'user'; // entrer vôtre login
  4. $mysql_password = 'mdp'; // entrer vôtre password
  5. $mysql_base = 'base'; // entrer le nom de vôtre base
  6. $db = mysql_connect($mysql_host,$mysql_user,$mysql_password) or die ("erreur de connexion" ); // Connection base de données
  7. mysql_select_db($mysql_base,$db) or die ("erreur de connexion base" ); //Sélection de la base
  8. $montab[]=array();
  9. for ($i=0;$i<50000;$i++) {
  10. $montab[$i]='toto';
  11. }
  12. $microstart = getmicrotime();
  13. for ($i=0;$i<50000;$i++) {
  14. $texte=mysql_real_escape_string($montab[$i]);
  15. }
  16. /*
  17. for ($i=0;$i<50000;$i++) {
  18. $texte=str_replace(array("\n","\r" ),' ',$montab[$i]);
  19. }
  20. */
  21. $fin_compte=getmicrotime();
  22. $duree=($fin_compte-$microstart);
  23. echo substr($duree,0,5).' sec.';
  24. function getmicrotime() {
  25.    $mtime = microtime();
  26.    $mtime = explode(" ",$mtime);
  27.    $mtime = $mtime[1] + $mtime[0];
  28.    return ($mtime);
  29. }
  30. ?>


 
Et là !!! Ho, miracle, 50000 mres prennent moins de temps que 50000 str_replace. :)

Message cité 1 fois
Message édité par The-Shadow le 12-05-2006 à 15:51:04
n°1365235
The-Shadow
Développeur
T'as été voir dans ton profil?
Posté le 12-05-2006 à 15:49:32  profilanswer
 

Djebel1 a écrit :

ça fait 20 fois que je te sors tous les inconvénients, alors que ça n'a aucun avantage :  
 
- stripslashes n'inversera pas mres en fonction de la config de la base
- tu bouffes une connection, et tu interroges la base pour avoir le charset etc, pour rien.
- ce n'est pas fait pour ça
 
Enfin relis mes posts quoi :p et donc OUI, je suis complètement opposé à ta solution ^^


T'es borné toi.
Si t'as une connection d'ouverte, les données que les utilisateurs entrent, tu les récupèrent de toutes façons en début de script, tu peux fermer ta base juste après.

n°1365236
FlorentG
Unité de Masse
Posté le 12-05-2006 à 15:50:28  profilanswer
 

Tiens, un script foireux :

<?php
 
  $link = mysql_connect('localhost', 'root', '');
 
  foreach($_GET as &$value) {
    $value = mysql_real_escape_string($value, $link);
  }
 
 
  foreach($_GET as $value) {
    echo 'Valeur : ' . htmlspecialchars(stripslashes($value)) . '<br>';
  }
 
?>


En l'appellant avec genre pouet.php?a=pouet&b=truc&c=machin&d=bidule&e=tagada&f=salut
 
On obtient :
http://img275.imageshack.us/img275/7928/mysqlconnect4lb.png

n°1365238
Djebel1
Nul professionnel
Posté le 12-05-2006 à 15:52:02  profilanswer
 

hey molo, j'ai déjà dit que tu faisais ce que tu voulais, que c'était pas pire que de ne rien faire, et que j'étais opposé à ta solution (qui est clairement toute pourrie).
Donc viens pas me dire que je suis borné, alors que tu l'es tout autant, en voulant utiliser des outils qui ne sont pas faits pour ce que t'en fais. Pour moi la discussion était close, puisque comme je l'ai déjà dit, ni toi ni moi ne changeront d'avis. Donc n'en viens pas aux compliments hein ;)
 
Enfin bref, fin du débat, continue ta méthode toute pourrie, np ;)

n°1365239
The-Shadow
Développeur
T'as été voir dans ton profil?
Posté le 12-05-2006 à 15:52:24  profilanswer
 

FlorentG a écrit :

Tiens, un script foireux :

<?php
 
  $link = mysql_connect('localhost', 'root', '');
 
  foreach($_GET as &$value) {
    $value = mysql_real_escape_string($value, $link);
  }
 
 
  foreach($_GET as $value) {
    echo 'Valeur : ' . htmlspecialchars(stripslashes($value)) . '<br>';
  }
 
?>


En l'appellant avec genre pouet.php?a=pouet&b=truc&c=machin&d=bidule&e=tagada&f=salut
 
On obtient :
http://img275.imageshack.us/img275 [...] ect4lb.png


qu'est-ce que vient faire htmlspecialshars là dedans.  :heink:  
Je parle des entrées, pas des sorties.

n°1365242
The-Shadow
Développeur
T'as été voir dans ton profil?
Posté le 12-05-2006 à 15:53:07  profilanswer
 

Djebel1 a écrit :

Enfin bref, fin du débat, continue ta méthode toute pourrie, np ;)


Je viens de te prouver que c'était fiable, que ça allait plus vite mais elle est toute pourrie, oui oui, c'est ça. :D

n°1365246
FlorentG
Unité de Masse
Posté le 12-05-2006 à 15:55:12  profilanswer
 

The-Shadow a écrit :

Et pour ne pas parler dans le vide, testez donc ça :

Code :
  1. <?php
  2. [...]
  3. ?>


 
Et là !!! Ho, miracle, 50000 mres prennent moins de temps que 50000 str_replace. :)


Bof, chez moi c'est parfaitement kif-kif, et il ne faut pas tomber s'il vous plaît dans la premature optimization C'est pas un mres ou un str_replace qui fera la différence, surtout que c'est super-rare d'en avoir 50 000. Au max une vingtaine, et là la différence entre les deux est ultra-minime. Faut plutôt se concentrer dans un cas concret (donc avec 20 itérations), où on observera que la connexion supplémentaire fait pencher la balance vers str_replace

n°1365248
FlorentG
Unité de Masse
Posté le 12-05-2006 à 15:56:11  profilanswer
 

The-Shadow a écrit :

qu'est-ce que vient faire htmlspecialshars là dedans.  :heink:  
Je parle des entrées, pas des sorties.


C'est pour faire un peu de traitement, genre pour un cas en situation réel. Et on voit que ce qui bouffe tout là-dedans, c'est la connexion... donc faut la dégager, vu qu'elle sert à rien

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4

Aller à :
Ajouter une réponse
 

Sujets relatifs
[.NET] Mettre du 1.1 et du 2.0 sur le même siteProbleme affiche de mon site sous FireFox
Besoind 'aide ,bug sur mon siteCréér des menus dans un site
Faire de la pub pour mon siteVIRUS dl.exe Help
Cherche tuto pour creation de site a à zcomment creer une partie admin sur son site
Help ! lire des données serie RS232lire une video sur un site ....
Plus de sujets relatifs à : Help site 'piraté'


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