Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les forums > Site Web > PHP > Vos Fonctions ou astuces > Lecture du sujet

Vos Fonctions ou astuces

Vous devez être inscrit pour pouvoir poster des messages

Page : Précédente  1  2  3  ...  70  71  72  73  74  75  76  ...  97  98  99  100  Suivante
Auteur Message
1 visiteur sur ce sujet (1 anonyme)
Page : Précédente  1  2  3  ...  70  71  72  73  74  75  76  ...  97  98  99  100  Suivante
Hors ligne Jeremie78 # Posté le 23/02/2008 à 13:43:20
Powered by GNU/Linux
Groupe : Membres
Reprise du dernier message de la page précédente :
QUi est plus est, l'IP est falsifiable..

Web-Modules : outils pour webmasters (compteurs, tchat, news ...) à installer sur son site, générateur de bannières, de userbars, ...
 
Hors ligne BiDOrD # Posté le 23/02/2008 à 16:39:36
Et ça c'est beau !
Avatar
Groupe : Membres
Hello,

Le plus fun dans ce système c'est pas le fait que comme vous l'avez dit, on peut facilement falsifier son IP. C'est le fait qu'on peut surtout faire bannir cette ip tout aussi facilement.

Sinon, je ne crois pas que ça ait été dit plus haut (honnêtement, je n'ai lu qu'en diagonale l'avalanche de réponses), mais il y a surtout une belle faille qui permet (pour peu que les droits d'accès du serveur soient mal règlés) de défacer ce qu'on veut...
Code : PHP - Afficher / masquer les numéros de ligne
  1. <?php
  2.    else{
  3.       echo"Tentative frauduleuse";
  4.       $handle_ban=fopen("/banneds/$ip_actuelle", "w+");
  5.       fclose($handle_ban);
  6.       exit;
  7. ?>

Tiens c'est marrant, moi mon IP c'est "../index.php" !

Image utilisateur
 
Hors ligne Jeremie78 # Posté le 23/02/2008 à 17:03:56
Powered by GNU/Linux
Groupe : Membres
En effet !
Enfin pas ton IP fournie par les paquets (forcément des chiffres) mais le X_FORWARD....

Bien pensé BiDord ;)

Web-Modules : outils pour webmasters (compteurs, tchat, news ...) à installer sur son site, générateur de bannières, de userbars, ...
 
Hors ligne Lynix # Posté le 23/02/2008 à 19:10:25
Graphiste 3D
Avatar
Groupe : Membres
En gros, $_SESSION powaaa :p

Utopy Bientot :D
 
Hors ligne Nanocom # Posté le 23/02/2008 à 19:19:03
Salut ô !
Avatar
Groupe : Membres
Non ^^
le SDZ n'utilise pas les sessions :p
Hors ligne Lynix # Posté le 23/02/2008 à 19:20:04
Graphiste 3D
Avatar
Groupe : Membres
Chacun sa méthode de travail, le site du zéro ne doit pas être l'exemple absolu :)

Utopy Bientot :D
 
Hors ligne Nanocom # Posté le 23/02/2008 à 19:21:20
Salut ô !
Avatar
Groupe : Membres
Oui of course, mais je trouve que leur système est super bien pensé, ça pourrait être intéressant d'en faire un tuto
Hors ligne Lynix # Posté le 23/02/2008 à 19:28:11
Graphiste 3D
Avatar
Groupe : Membres
C'est quoi leur systeme?

Utopy Bientot :D
 
Hors ligne Talus # Posté le 23/02/2008 à 19:55:56
タルス
Avatar
Groupe : Membres
A mon avis, c'est bien un systeme de session... Mais à leur sauce :)

(C'est faisable, et facilement même... Enfin, facilement, c'est faisable quoi :p)
 
Hors ligne hametsu # Posté le 23/02/2008 à 20:26:26
Groupe : Membres
Connaître le dossier principale où l'on se situe dépourvu du chemin root :Code : PHP - Afficher / masquer les numéros de ligne
  1. <?php define('BASE_DIR', dirname(substr(dirname(__FILE__), strlen($_SERVER['DOCUMENT_ROOT'])))); ?>
Édité le 23/02/2008 à 20:27:01 par hametsu
Hors ligne BiDOrD # Posté le 23/02/2008 à 21:24:14
Et ça c'est beau !
Avatar
Groupe : Membres
Hello,

Tu n'aurais pas mis un dirname de trop ?

Code : PHP - Afficher / masquer les numéros de ligne
  1. <?php
  2. // Je suis dans /www/dira/dirb/dirc/index.php et $_SERVER['DOCUMENT_ROOT'] vaut '/www/'
  3.  
  4. echo dirname(substr(dirname(__FILE__), strlen($_SERVER['DOCUMENT_ROOT'])));
  5. // Renvoie : dira/dirb
  6.  
  7. echo substr(dirname(__FILE__), strlen($_SERVER['DOCUMENT_ROOT']));
  8. // Renvoie : dira/dirb/dirc
  9.  
  10. echo dirname(substr(__FILE__, strlen($_SERVER['DOCUMENT_ROOT'])));
  11. // Renvoie : dira/dirb/dirc
  12. ?>


Donc avec tes 2 dirname, tu nous zap un dossier.
Édité le 23/02/2008 à 22:01:57 par BiDOrD

Image utilisateur
 
Hors ligne hametsu # Posté le 23/02/2008 à 21:38:57
Groupe : Membres
Le dossier ou je me situe ne m'intéresse pas, ce que je voulais c'est récupérer le dossier ou se situe l'ensemble du site.
Hors ligne BiDOrD # Posté le 23/02/2008 à 22:01:30
Et ça c'est beau !
Avatar
Groupe : Membres
Oulah, va falloir que tu sois plus précis, car j'ai du mal à te suivre...

Dans mon cas précédent :
Nous sommes sur la page : http://www.monsite.com/dira/dirb/dirc/index.php
$_SERVER['DOCUMENT_ROOT'] vaut : /www/
__FILE__ vaut : /www/dira/dirb/dirc/index.php

Ta constante vaut : dira/dirb
En quoi celà représente "le dossier ou se situe l'ensemble du site" ?
Édité le 23/02/2008 à 22:02:57 par BiDOrD

Image utilisateur
 
Hors ligne Dutiona # Posté le 23/02/2008 à 22:06:59
Vis pour être heureux !
Avatar
Groupe : Membres
J'aimerais revenir sur un truc :

Citation : Lcf.vs

et comme le disait Nyu, le ssl sert à crypter la transmission de données mais, à ce que je sache, ça ne te met pas à l'abri d'un vol de session

Ah bon ?

C'est nouveau ça... Un vol de session c'est ce qu'on appele un "man in the middle" qui regarde les données qui transitent entre le client et le serveur (comme l'identifiant de session par exemple, qui circule en clair sur un réseau TCP/IP normal... (mais ça, c'est un autre problème)). Dès qu'il a cet id, il crée un cookie avec et hop, une session !

Une session ssl c'est :
  • le serveur envoie sa clé publique au client.
  • le client envoie sa clé publique cryptée avec la clé publique du serveur
  • le serveur décrypte la clé publique du client à l'aide de sa clé privée
  • le serveur envoie des données cryptées avec la clé publique du client
  • le client les décrypte avec sa clé privée et répond au serveur grâce à la clé publique du serveur

C'est du rsa pur et simple. La seul donné qui passe en clair (lisible) entre les deux, c'est une clé publique (celle du serveur). Explique, maintenant, comment un "man in the middle" pourait utiliser cette clé pour voler une session.

Il peut pas. Une session https CONTRECARE un vol de session. Pour voller une session https, il faut pomper les données AVANT qu'elles partent du client ou du serveur (i.e. un ver ou un trojan...)


Pour tout ton système, tu aurais juste a acheter un cercificat https chez ton hebergeur, et faire une espace membre sur un domaine (ou sous-domaine) où tu aurais mis le certificat.

C'est une solution forcément plus efficace que tous ce que tu pouras produire via du code php.


Bisous, Nyu

Défiez ma brute !
Eclipse user | Ubuntu (KDE) user | php/sql/xhtml/css/xml/xsl/javascript/java/python/perl/c/scheme coder.
Framework in use: Seraframework (my own one).
In Microeisti staff.
 
Hors ligne hametsu # Posté le 23/02/2008 à 22:07:01
Groupe : Membres
Après réfections... J'ai un .htaccess qui me redirige tout dans un dossier "public", avec ce morceau de code je récupère l'endroit ou est situé la totalité de mes dossiers (library, etc.) en supprimant le dossier "public".

utile pour analyser mes urls :
http://www.site.fr/dossier_du_site/

alors qu'en réalité je suis dans :
http://www.site.fr/dossier_du_site/public/index.php
Hors ligne Tracker # Posté le 23/02/2008 à 22:21:11
Avatar
Groupe : Membres
Citation : Dutiona
[...]C'est une solution forcément plus efficace que tous ce que tu pouras produire via du code php.[...]


+1
Mais c'est pas très sympa de casser les délires Lcf.vs



Tracker.

Un peu de lecture: PHP // MySQL // JavaScript // w3schools // SQL
 
Hors ligne elazard # Posté le 23/02/2008 à 22:26:17
Groupe : Membres
Lol ca ne changera rien hormis une nouvelle déclaration tapageuse sur son dégout des zéros qui comme des c**s ne voient pas la portée probablement interplanétaire de sa dernière production d'inventeur, il restera convaincu que son système est le seul, l'unique, le fantastique chainon manquant.
Édité le 23/02/2008 à 22:26:48 par elazard
Hors ligne BiDOrD # Posté le 23/02/2008 à 22:37:24
Et ça c'est beau !
Avatar
Groupe : Membres
Citation : hametsu
Après réfections... J'ai un .htaccess qui me redirige tout dans un dossier "public", avec ce morceau de code je récupère l'endroit ou est situé la totalité de mes dossiers (library, etc.) en supprimant le dossier "public".

utile pour analyser mes urls :
http://www.site.fr/dossier_du_site/

alors qu'en réalité je suis dans :
http://www.site.fr/dossier_du_site/public/index.php

La seule chose que ta constante fais c'est d'appliquer un double dirname() au chemin de __FILE__ sans le document_root... Donc elle donne le parent du parent de ce fichier.
Bref, ça ne fonctionne que dans ton cas précis. Et cette fonction n'a rien à voir avec ta définition.

En plus le chemin de __FILE__ sans document_root, lorsque tu es dans la page principale (donc pas une page inclue), est égal à $_SERVER['SCRIPT_NAME'].
Édité le 23/02/2008 à 22:40:13 par BiDOrD

Image utilisateur
 
Hors ligne hametsu # Posté le 23/02/2008 à 22:45:51
Groupe : Membres
Okay -> []

ça m'aura servi de poster ce morceau de code ignoble afin de le corriger :D
Hors ligne Dutiona # Posté le 23/02/2008 à 22:48:07
Vis pour être heureux !
Avatar
Groupe : Membres
Citation : Tracker
Citation : Dutiona
[...]C'est une solution forcément plus efficace que tous ce que tu pouras produire via du code php.[...]


+1
Mais c'est pas très sympa de casser les délires Lcf.vs



Tracker.


Je le casse pas, je lui explique comment ça marche. La solution que je propose est, certe plus efficace (je suis sûr que Lcf.vs comprendra pourquoi c'est mieux) MAIS, le certificat, il faut l'acheter... Donc, bah.. Il fait comme il veut ;) .


Bisous, Nyu
Édité le 23/02/2008 à 23:23:23 par Dutiona

Défiez ma brute !
Eclipse user | Ubuntu (KDE) user | php/sql/xhtml/css/xml/xsl/javascript/java/python/perl/c/scheme coder.
Framework in use: Seraframework (my own one).
In Microeisti staff.
 
Hors ligne Tracker # Posté le 23/02/2008 à 23:00:56
Avatar
Groupe : Membres
Le certificat pour être directement accepté par le navigateur sans alertes doit être déposé donc payant, mais ça n'a jamais été une obligation. Ce qui n'est pas sympa c'est de lui avoir montré que quelque soit l'élément qui fasse le lien entre le navigateur et le contexte d'exécution serveur celui-ci est interceptable sans ssl, ce qui devrait le convaincre d'arrêter les frais.


Tracker.

Un peu de lecture: PHP // MySQL // JavaScript // w3schools // SQL
 
Hors ligne Dutiona # Posté le 23/02/2008 à 23:22:45
Vis pour être heureux !
Avatar
Groupe : Membres
Ben je lui ait montré que son truc ne marcherait pas mieux que des sessions... Je vois pas ce qu'il y a de pas sympa.
Peut être le ton de mes messages ? Mais c'est pas voulu, je voulais juste appuyer sur certains termes (d'où les majs et la fonte en gras) pour bien montrer ce qui n'allait pas.

Après, Lcf.vc fait ce qu'il veut mais au moins, on l'a prévenu. Il peut toujours continuer de faire son système, je ne l'en empecherai pas. Je lui ai juste montré une des alternatives efficaces.


Bisous, Nyu

Défiez ma brute !
Eclipse user | Ubuntu (KDE) user | php/sql/xhtml/css/xml/xsl/javascript/java/python/perl/c/scheme coder.
Framework in use: Seraframework (my own one).
In Microeisti staff.
 
Hors ligne Tracker # Posté le 23/02/2008 à 23:27:05
Avatar
Groupe : Membres
Le "pas sympa" c'était juste ironique, je trouve plutôt pathétique l'obstination de Lcf.vs :-°

;)
Tracker.

Un peu de lecture: PHP // MySQL // JavaScript // w3schools // SQL
 
Hors ligne Dutiona # Posté le 23/02/2008 à 23:31:24
Vis pour être heureux !
Avatar
Groupe : Membres
Citation : Tracker
Le "pas sympa" c'était juste ironique, je trouve plutôt pathétique l'obstination de Lcf.vs :-°

;)
Tracker.


Ah ! :lol:

Je comprend mieux !


Bisous, Nyu

Défiez ma brute !
Eclipse user | Ubuntu (KDE) user | php/sql/xhtml/css/xml/xsl/javascript/java/python/perl/c/scheme coder.
Framework in use: Seraframework (my own one).
In Microeisti staff.
 
Hors ligne Jeremie78 # Posté le 24/02/2008 à 01:51:39
Powered by GNU/Linux
Groupe : Membres
Citation : Dutiona
Une session ssl c'est :
  • le serveur envoie sa clé publique au client.
  • le client envoie sa clé publique cryptée avec la clé publique du serveur
  • le serveur décrypte la clé publique du client à l'aide de sa clé privée
  • le serveur envoie des données cryptées avec la clé publique du client
  • le client les décrypte avec sa clé privée et répond au serveur grâce à la clé publique du serveur

Désolé de te contredire, mais si agit seulement comme ça, une attaque de type man in the middle reste possible ...
Échangeant "à la volée" les clés publiques échangées et en mettant la sienne :)

C'est pour ça que l'on a créé les tiers certificateurs ! Vous savez : Verisign, Thawte, ...
  • la clé privée du tier certificateur est connue de client
  • il initialise un connexion SSL avec la clé publique de tier certificateur et demande la clé publique du site qu'il veut visiter, il lui transmet par la même occasion sa clé publique
  • il reçoit la clé publique du site à visiter (de façon chiffrée)
  • il peut commencer une session SSL avec le site à visiter sans craindre aucune attaque de type man in the middle et étant certain de la clé publique à utiliser :)

Web-Modules : outils pour webmasters (compteurs, tchat, news ...) à installer sur son site, générateur de bannières, de userbars, ...
 
Hors ligne JeromeJ # Posté le 24/02/2008 à 02:45:11
Avatar
Groupe : Membres
Surement déjà proposé un paquet de fois mais je la remet (si elle a djà été mise =d) ça ne fera pas de mal à certains. Surtout aux flemmards...

Code : PHP - Afficher / masquer les numéros de ligne
  1. <?php
  2. function show_array($array)
  3. {
  4.         echo '<pre>';
  5.         print_r($array);
  6.         echo '</pre>';
  7. }
  8. ?>








Secret (cliquez pour afficher)
Ce que je maitrise actuellement: XHTML, CSS, PHP, Action Script 2 et 3, JavaScript, SQL, Python, et un peu de C, C++ et d'erl
 
Hors ligne Bilbax # Posté le 24/02/2008 à 02:49:33
www.bilbax.eu
Avatar
Groupe : Membres
Bha écrire ceci est pas si contraignant je trouve :

Code : PHP - Afficher / masquer les numéros de ligne
  1. <?php echo '<pre>'.print_r($array, true);
Hors ligne JeromeJ # Posté le 24/02/2008 à 03:47:16
Avatar
Groupe : Membres
Citation : Bilbax
Bha écrire ceci est pas si contraignant je trouve :

Code : PHP - Afficher / masquer les numéros de ligne
  1. <?php echo '<pre>'.print_r($array, true);
Certains trouvent que si, et puis, toi c'est pas valide y a pas le </pre> :lol: au moins comme ça c'est fait.

Sinon merci j'avais oublié que un bool(1) comme 2e paramètre à print_r permettait de renvoyer sa valeur =] ça fait 1 ligne au lieu de 3 ^^








Secret (cliquez pour afficher)
Ce que je maitrise actuellement: XHTML, CSS, PHP, Action Script 2 et 3, JavaScript, SQL, Python, et un peu de C, C++ et d'erl
 
Hors ligne Jeremie78 # Posté le 24/02/2008 à 10:33:03
Powered by GNU/Linux
Groupe : Membres
Perso je trouve cette fonction utile :)
Mais à classer dans la catégorie "fonctions de dév" parce que en pro, ça le fait pas d'afficher des array comme ça :p

Web-Modules : outils pour webmasters (compteurs, tchat, news ...) à installer sur son site, générateur de bannières, de userbars, ...
 
Hors ligne Talus # Posté le 24/02/2008 à 12:55:51
タルス
Avatar
Groupe : Membres
Perso, quand je veux un bel array bien présenté (surtotu quand y'a pleins de clés, pleins de dimensions, etc), j'utilis ema fonction à moi qui miam bien des ressources. Et puis pouet.

Code : PHP - Afficher / masquer les numéros de ligne
  1. <?php
  2. // -- Simule printr, mais en mieux (:p).
  3. //      // -- Argument(s) :
  4. //      //      // -- $ary :: Array à analyser
  5. //      //      // -- $return :: Retourner le resultat ou bien l'afficher ? (True / False)
  6. //      //      // -- $gettype :: Retourner egalement le type de chaque elements ? (True / False)
  7. function print_ary($ary, $return = true, $gettype = false){
  8.         // -- Static permet de conserver la valeur d'une variable au fur et à mesure de l'appel d'une fonction. Sinon, elle serait détruite.
  9.         // -- $indent retient le nombre d'iteration (tabulations). Juste un effet de style :D
  10.         static $indent;
  11.         // -- On vérifie si les arguments entrée sont du type qu'on veut :p
  12.         $return = (int)(bool) $return;
  13.         $gettype = (int)(bool) $gettype;
  14.         // -- On incrémente l'indentation.
  15.         $indent++;
  16.        
  17.         // -- Si $ary est un array ou un objet (merci php5), on affiche le schmilblik.
  18.         if( is_array($ary) || is_object($ary) ){
  19.                 $result = '<strong style="color:blue;">Array (<em style="color:green;size:110%;">' . ($c = count($ary)) . '</em> element' . ((int)$c != 1 ? 's' : '') . '){</strong>';
  20.                
  21.                 // - On parcourt le tableau $ary.
  22.                 foreach($ary as $key => $value){
  23.                         // -- Petite bidouille d'affichage :p
  24.                         $n_key = (!ctype_digit(stripslashes($key)) ? '\'' . $key . '\'' : $key);
  25.                         $n_value = ((!ctype_digit(stripslashes($value)) && !is_array($value)) ? '\'' . $value . '\'' : $value);
  26.                        
  27.                         // -- On ajoute le nouvel element à l'arbre de retour.
  28.                         $result .= "\n" . str_repeat("\t", $indent) . '<span style="color:blue;">[</span><strong style="color:red;">' . $n_key . '</strong><span style="color:blue;">] =></span> ';
  29.                        
  30.                         // -- Si la valeur de la ligne est un array (ou un objet), on relance la fonction (récursivité)
  31.                         if( is_array($value) || is_object($value) ){
  32.                                 $result .= print_ary($value, true, $gettype);
  33.                         }
  34.                         // -- Sinon, on ajoute la valeur de l'element.
  35.                         else {
  36.                                 $result .= (($gettype) ? '<span style="color:blue;">(<em>' . gettype($n_value) . '</em>)</span> ' : '') . '<span style="color:red;">' . $n_value . '</span>';
  37.                         }
  38.                        
  39.                         // -- Si ce n'est pas la fin de l'array, on affiche une ",", sinon rien.
  40.                         $result .= ($key != end(array_keys($ary)) ? ',' : '');
  41.                 }
  42.                
  43.                 // -- On affiche l'accolade fermante.
  44.                 $result .= "\n" . str_repeat("\t", --$indent) . '<strong style="color:blue;">}</strong>';
  45.         }
  46.         // -- Ce n'est pas un array : on affiche alors le texte comme un simple texte.
  47.         else {
  48.                 $value = ((!ctype_digit(stripslashes($ary))) ? '\'' . $ary . '\'' : $ary);
  49.                 $result = ($gettype ? '<span style="color:blue;">(<em>' . gettype($value) . '</em>)</span>': '') . '<span style="color:red;">' . $value . '</span>';
  50.         }
  51.        
  52.         // -- Si on ne veut pas retourner le resultat de la fonction, on l'affiche. Sinon, on le retourne.
  53.         if( !$return ){
  54.                 echo '<pre>' . $result . '</pre>';
  55.         }
  56.         else {
  57.                 return $result;
  58.         }
  59. }


En plus, elle fait un peu moins bien que printr, car je pense que pour les objets, c'est pas encore ca :lol:
 
Hors ligne Dutiona # Posté le 24/02/2008 à 13:22:12
Vis pour être heureux !
Avatar
Groupe : Membres
Citation : Jeremie78
Citation : Dutiona
Une session ssl c'est :
  • le serveur envoie sa clé publique au client.
  • le client envoie sa clé publique cryptée avec la clé publique du serveur
  • le serveur décrypte la clé publique du client à l'aide de sa clé privée
  • le serveur envoie des données cryptées avec la clé publique du client
  • le client les décrypte avec sa clé privée et répond au serveur grâce à la clé publique du serveur

Désolé de te contredire, mais si agit seulement comme ça, une attaque de type man in the middle reste possible ...
Échangeant "à la volée" les clés publiques échangées et en mettant la sienne :)

C'est pour ça que l'on a créé les tiers certificateurs ! Vous savez : Verisign, Thawte, ...
  • la clé privée du tier certificateur est connue de client
  • il initialise un connexion SSL avec la clé publique de tier certificateur et demande la clé publique du site qu'il veut visiter, il lui transmet par la même occasion sa clé publique
  • il reçoit la clé publique du site à visiter (de façon chiffrée)
  • il peut commencer une session SSL avec le site à visiter sans craindre aucune attaque de type man in the middle et étant certain de la clé publique à utiliser :)



Ben non, si le man in the middle change la clé, le client ne peut, certe, plus que communiquer avec le man in the middle mais il ne peut plus avec le serveur (le serveur pourra jamais décrypter les données du clients). Donc le man in the middle ne pourra rien faire vu que le serveur n'aura pas encore créé les cookies/session/etc...



Bisous, Nyu


EDIT : bug du sdz, il m'a pris que la citation et rien de mon message...
Édité le 24/02/2008 à 13:47:41 par Dutiona

Défiez ma brute !
Eclipse user | Ubuntu (KDE) user | php/sql/xhtml/css/xml/xsl/javascript/java/python/perl/c/scheme coder.
Framework in use: Seraframework (my own one).
In Microeisti staff.
 

Retour au forum "PHP" ou à la liste des forums

Vous devez être inscrit pour pouvoir poster des messages

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | RSS tutoriels | RSS news
Édité par Simple IT SARL : Nous contacter | Notre blog | Revue de presse | Publicité

Y'a plus rien à lire, faut remonter maintenant !

Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 95 Zéros connectés | Requêtes SQL 6 requêtes | Temps de génération de la page : Total (SQL) 0.1197s (0.0982s)