Vous consultez les articles taggés PHP
juil
28

Recommandations de sécurité Ez publish et PHP

Failles xss

Avec Ez Publish

Utiliser la fonction wash() sur les variables dans les templates, surtout sur les variables pouvant être modifiées par l’utilisateur (paramètres d’url, champs de formulaire, etc)

En PHP

La stratégie de protection principale contre les injections HTML est la même que pour toutes les injections. Il est recommandé d’implémenter une fonction de filtrage en entrée et une fonction d’encodage en HTML en sortie.

L’encodage en sortie peut être effectué par deux fonctions en PHP :

- htmlspecialchars() remplace tous les caractères qui ont une signification spéciale en HTML par leur entité HTML. Cette fonction va cibler les caractères suivants :

  • &, le « et commercial », qui commence les séquences HTML (telles que &) ;
  • ‘, les guillemets simples, utilisés dans les attributs ;
  • , les guillemets doubles, utilisés dans les attributs ;
  • < et >, les signes « inférieur à » et « supérieur à », qui délimitent une balise.

- htmlentities() est une version plus complète de htmlspecialchars(), elle remplace dans une chaîne tous les caractères possibles par leur séquence HTML. Il est possible de spécifier le masque et l’encodage à utiliser

<a href="http://www.php.net/htmlentities" target="blank">htmlentities</a>($str, ENT_QUOTES, 'UTF-8');
fév
16

Limite du nombre de paramètres GET

Author Appo    Category PHP     Tags , , , ,

Aujourd’hui j’ai rencontré un problème sur un site en production et seulement sur la production. Les symptômes ? Perte d’informations passées en paramètres GET. Après quelques recherches, nous avons repéré que $_GET ne contenait pas toutes les informations présentes dans l’url, il manquait les dernières (environ une dizaine de paramètres manquants).

La première hypothèse fut donc que l’URL était tronquée au delà d’un certain nombre de caractères. Sauf que le problème, c’est que d’une page à l’autre, la longueur de l’URL était différente mais surtout, que l’endroit où l’on perdait le premier paramètre n’était pas le même, donc ce ne pouvait pas être un tronquage de l’URL.

Lire la suite

août
31

La fonction PHP extract() ou comment extraire John Butler.

Un petit article aujourd’hui pour parler d’une fonction que je n’avais jamais utilisée jusqu’à présent.

En fait, ça n’est pas tout à fait vrai, puisque j’ai développé une fonction qui faisait la même chose. Oui, je sais, j’aurais dû chercher dans l’excellente doc PHP avant. Lire la suite

mar
21

CodeIgniter 2.0 : Etendre la classe Controller

En ce moment, au boulot, nous nous sommes fixé comme objectif de tester différents frameworks pour choisir celui que nous adopterons par la suite.

Je suis donc en train de faire quelques tests très basiques sur CodeIgniter 2.0, et je viens de rencontrer une petite difficulté en voulant étendre la classe Controller du Core. Cette petite note pourra peut-être aider quelques étourdis comme moi. Lire la suite

mar
17

Installer PEAR dans wamp avec une version PHP >= 5.3 sous Windows

Author Appo    Category Divers     Tags , , ,

Wamp Pear PHP 5.3

Ca peut paraitre tout bête mais l’installation de PEAR ne fonctionne pas par défaut si vous utilisez une version de Wamp avec une version de PHP >= 5.3.

Dans mon cas, j’utilise la 5.3.5 et lorsque je veux installer PEAR, j’obtiens l’erreur suivante :

1
2
3
4
phar "C:\wamp\bin\php\php5.3.5\PEAR\go-pear.phar" does not have a signaturePHP
Warning: require_once(phar://go-pear.phar/index.php): failed to open stream:
phar error: invalid url or non-existent phar "phar://go-pear.phar/index.php"
in C:\wamp\bin\php\php5.3.5\PEAR\go-pear.phar on line 1236
phar "C:\wamp\bin\php\php5.3.5\PEAR\go-pear.phar" does not have a signaturePHP
Warning: require_once(phar://go-pear.phar/index.php): failed to open stream:
phar error: invalid url or non-existent phar "phar://go-pear.phar/index.php"
in C:\wamp\bin\php\php5.3.5\PEAR\go-pear.phar on line 1236

Après quelques petites recherches sur google, voici la solution la plus facile à mettre en oeuvre pour résoudre ce problème

Ouvrez votre php.ini et chercher la ligne

1
phar.require_hash
phar.require_hash

Decommentez cette ligne et passez sa valeur à off

Voilà, vous pouvez relancer votre go-pear.bat, cela devrait fonctionner correctement.

jan
13

Configuration de Yii

Voici la traduction du troisième épisode de la série de Larry Ullman Apprendre le Yii Framework.

Cet article détaille le contenu du fichier de configuration général de Yii.

L’article original en anglais (Configuring Yii) est consultable sur le site de l’auteur : www.LarryUllman.com.

Lire la suite

jan
12

Introduction au framework Yii

Préambule

Comme vous le savez, j’ai découvert le framework PHP Yii il y a quelques semaines. Le premier contact a vraiment été agréable pour moi, et j’ai l’impression que c’est un outil très efficace pour faire gagner du temps au développeur. Dans un article précédent, j’en arrivais à la conclusion que Yii répond à tous les critères que je me suis fixés  dans le choix d’un framework, excepté celui de la notoriété (en particulier en France : seulement 46 sujets ouverts sur le forum du site officiel en français).

Lire la suite

jan
8

Choisir un framework PHP

Edit du 13 janvier 2011 : si vous recherchez un tutorial pas à pas sur Yii en français, vous pouvez consulter ma traduction (le premier article est ici) de la série Learning the Yii Framework de Larry Ullman.

Dernièrement, j’ai passé pas mal de temps à tenter de savoir quel serait pour moi (j’insiste sur le côté très subjectif de la conclusion de cet article) le framework le plus adapté à mon niveau et à mes besoins.

Lire la suite

déc
28

Astuce : ne fermez pas vos tags PHP !

Si vous programmez en PHP, vous avez sans aucun doute déjà inclus un fichier dans un autre :

include "monFichier.php";

Si vous programmez en PHP, je suis également certain que vous avez déjà rencontré cette erreur :

Headers already sent by monFichier.php

Je me trompe ?

Cette erreur vient souvent du fait que vous avez laissé trainer un caractère (balise, retour chariot, caractère quelconque)  dans un fichier qui n’est censé rien afficher (librairie, classe). Si vous incluez ce fichier et que vous utilisez une fonction qui utilise les headers (headers(), session_start() ou setcookie(), par exemple), la fameuse erreur va apparaître.

La solution est donc de ne pas fermer vos tags PHP dans les fichiers qui ne contiennent que du PHP. En MVC, cela signifie que vous ne devez en principe pas rencontrer de tag php fermant ?> (closing tags PHP) ailleurs que dans les vues.

Si vous utilisez symfony, vous aurez remarqué qu’ils ne ferment pas les tags PHP dans les classes générées. Plus fort que le Roquefort (j’adore cette expression, désolé) : Zend Framework, dans ses conventions de codage (ici et ) , indique qu’il est interdit de mettre un tag PHP fermant dans un fichier ne contenant que du code PHP.

Vous trouverez sur le site Finish Joomla des exemples de ce que je viens d’expliquer et une liste de projets open source qui ont choisi de supprimer les tags PHP fermants.

déc
27

Un framework PHP prometteur : Yii

Ce matin, je vous propose de découvrir un nouveau framework qui m’a l’air bien prometteur : Yii Framework.

[Edit : attention, c'est Yii, pas Wii, OK ? Je dis ça parce qu'Appo se demandait pourquoi je parle pas de manettes dans mon article...]

Pour la plupart d’entre vous, j’imagine que ce nom n’évoque rien du tout. Pourtant, la version 1.0 date de Décembre 2008, et il a été régulièrement mis à jour depuis (version actuelle : 1.1.5). De plus, le développeur qui est à l’origine de l’outil n’est autre que Qiang Xue. Comment ça, ça ne vous dit rien ? Bon, j’explique pour les curieux : Qiang Xue n’est pas tout à fait un inconnu, puisqu’il est déjà le développeur à l’origine du framework Prado, dont Yii est le successeur.

Lire la suite

Edito

Bienvenue sur Mémorandom.

Mémorandom est le blog de 2 développeurs web, Appo et Nico.

Vous y trouverez des informations sur différents domaines touchant de près ou de loin au développement web

Tutoriels Yii Framework

Nos derniers articles

Blogs Dev

Liens

Mots-clefs