LA GLOBULE

Inscris le 25/09/2002 à 10:40
  • Site web
  • Nombre de sujets
    47
  • Nombre de messages
    8 345
  • Nombre de commentaires
    142
  • Nombre de news
    8 346
  • Niveau en PHP
    Excellent

Ses derniers messages sur les forums

LA GLOBULE
le 02/09/2010 à 14:14
Problèmes INSERT dans la base de données
<?php
$sql = "INSERT INTO maillist ('firstName', 'lastName', 'birthday', 'street', 'number', 'town', 'zip', 'email', 'cellularPhone') VALUES ('".mysql_real_escape_string($_POST['firstName'])."', '".mysql_real_escape_string($_POST['lastName'])."', '".mysql_real_escape_string($_POST['birthday'])."', '".mysql_real_escape_string($_POST['street'])."', '".mysql_real_escape_string($_POST['number'])."', '".mysql_real_escape_string($_POST['town'])."', '".mysql_real_escape_string($_POST['zip'])."', '".mysql_real_escape_string($_POST['email'])."', '".mysql_real_escape_string($_POST['cellularPhone'])."')";
?>


Ceci devrait mieux fonctionner.

Tu avais non seulement un soucis de concaténation, mais aussi et c'est plus grave, 2 autres soucis :
- tu ne protèges pas tes requetes SQL contre les injections : il faut pour cela utiliser mysql_real_escape_string
- $_POST['firstName'] est différent de $_POST[firstName] : dans le cas de $_POST[firstName], php va chercher si la constante firstName existe, et si oui, il va chercher dans le tableau $_POST si l'index prenant la valeur de la constante existe
LA GLOBULE
le 26/08/2010 à 09:46
Script qui ne fonctionne pas sous IE
Tu peux installer sur ton site une applet java te permettant de te connecter à un serveur IRC.
Celle qui est utilisée sur lephpfacile est pjirc (tu peux la tester via le lien "chat / irc" dans la colonne de gauche).

D'autres outils doivent exister, dont certains surement en flash.
LA GLOBULE
le 25/08/2010 à 09:48
Script qui ne fonctionne pas sous IE
Quel est le problème sous IE ?

PS : faire un chat comme tu le fais n'est pas vraiment recommandé pour les serveurs. Utilise plutôt IRC ou bien fait du long polling.
PPS : à défaut de les vérifier, utilise htmlentities pour afficher tes données $_GET et $_SESSION
LA GLOBULE
le 23/08/2010 à 20:52
Comment valider un input type="image"
Oui, $_POST['connexion'] n'existe pas dans le cas d'un bouton image, tu auras $_POST['connexion_x'] et $_POST['connexion_y'].
LA GLOBULE
le 23/08/2010 à 09:34
comment trouver les failles aux scripts php
Vaste sujet...

Alors, tout d'abord, pour éviter un maximum d'erreur, il faut développer en affichant toutes les erreurs PHP (ini_set('display_errors', '1'); et ini_set('error_reporting', '-1');) et si tu vois des NOTICE PHP, il faut les corriger.

Ensuite, avant même de regarder les bugs directement liés aux fonctions de PHP, il faut absolument verrouiller ton flux de données entrant et sortant.

Exemple : tu as un script qui récupère un paramètre 'toto' dans l'URL.

- Comment réagit ton script si ce paramètre n'est pas présent ?
- Comment réagit ton script si ce paramètre est une chaine de caractère alors que toi tu attendais un chiffre ? (ou l'inverse ?)
- Si le paramètre peut et doit prendre seulement X valeurs possibles, testes tu bien que ce paramètre fait bien partie des valeurs que tu attendais ?
- Si tu affiches le contenu de ce paramètre dans ta page, utilises tu bien htmlentities (faille XSS) ?
- Si tu utilises ce paramètre pour faire une requête SQL, utilises tu bien mysql_real_escape_string (injection SQL) ?

Ensuite, il te faut vérifier la cohérence des actions de ton site.

Exemple : tu as un espace membre, et une page permettant à un membre de modifier son profil.

- Vérifies tu bien que tu as un membre logué pour effectuer cette action ?
- En manipulant les données GET ou POST, est ce qu'un membre peut agir sur le profil d'un autre membre ?

En vérifiant ce strict minimum, tu éviteras pas mal de pièges.

Après, dans le même contexte, en poussant le vice un peu plus loin, tu as les failles de type CSRF.

Exemple : tu as un espace membre, et une page permettant à un membre de supprimer son compte grâce à l'URL : http://site.com/del.php

- Un site tiers place alors dans son code html une image du genre : <img src="http://site.com/del.php" />
- Un de tes membres va sur ton site, il est donc logué sur ton site (grâce aux sessions)
- Ce membre va ensuite sur ce "site piège"
- Comme le membre est toujours logué sur ton site (les sessions n'expirent pas quand le membre change l'URL de son navigateur sauf si il clic sur un lien "déconnexion"), ce membre fera le hit sur ton URL de suppression de compte, et son compte sera supprimé sans qu'il s'en aperçoive.

Pour fixer ce genre de problème, tu peux utiliser un paramètre "spécial" qui te permettra de vérifier l'action de l'utilisateur.
- Tu initialises en session un paramètre qui prendra une valeur aléatoire (tu peux utiliser la fonction uniqid par exemple) lorsque la personne arrive sur la page où l'action de suppression de compte est faisable via un clic de souris.
- Ensuite, si l'action de suppression se fait via un lien, tu mettras en plus dans l'URL un paramètre du genre 'check' qui prendra la valeur de ton paramètre de session (si tu utilises un formulaire, utilise un champ hidden).
- Enfin, dans la page del.php, tu vérifieras non seulement que la valeur existe en session, mais aussi que le paramètre 'check' (en GET ou en POST) existe également, et enfin tu regarderas si ces deux valeurs sont identiques. Si oui, alors tu pourras lancer l'action de suppression.

etc, etc, etc...

Bref, la sécurité est un très vaste sujet qu'il ne faut pas prendre à la légère, et cela demande un vrai travail qui peut sembler long et fastidieux, mais c'est ce qui fait qu'un développeur sera considéré comme bon.
Faire un script "qui marche" c'est bien, mais faire un script "qui marche" et qui gère tous les cas de figure possible, c'est mieux.
LA GLOBULE
le 23/08/2010 à 08:54
Comment valider un input type="image"
Dans le cas d'un input image, tu recevras 2 valeurs : nom_x et nom_y qui contiendront les coordonnées du point de l'image sur lequel l'utilisateur a cliqué.
LA GLOBULE
le 22/08/2010 à 13:25
Bouton collé à un TextField
Puisque google l'a fait, oui c'est possible.

Ce n'est que du CSS.
D'ailleurs, pour cela, tu peux regarder le code source de google pour voir comment ils font.

L'extension firebug de firefox peut t'aider à visualsier le code CSS du bouton.
LoadingChargement en cours