Tous les articles dans Production

17 Articles

HTML5 : orgueil et préjugés (Un petit point sur… )

html5

Quand on travaille dans l’univers du Web, que l’on soit marketing, rédacteur, journaliste, CEO digital et j’en passe (et je passe évidemment consultant, développeur…) on se DOIT de connaître le HTML !

Les 10 infographies WordPress qu’il faut avoir vues en 2012

WordPress-Plugins

En attendant un prochain comparatif des CMS Open source (je vais attendre la version 3.5 de WordPress prévue en décembre pour ça), voici un récapitulatif en images de ce qu’il faut savoir sur ce CMS (chiffres clés, usages, historique…).

En finir (presque) avec les failles de sécurité de PHP

La sécurité des données est souvent considérée au départ  de la conception puis vite sous estimée par les développeurs et même par les clients – il faut y consacrer du temps…

Depuis PHP 5.2.0, l’assainissement et la validation des données sont nettement facilités avec l’introduction de filtrage des données.

L’utilisation de PHP sur le web a réellement été boostée avec les logiciels open source comme WordPress, Drupal et Magento ainsi que des applications Web comme Facebook. Les possibilités d’intrusion et d’insécurité pour les données augmentent d’autant plus que les applications où est employé PHP sont variées: sites web dynamiques, applications riche et métier, plates-formes de blogs, systèmes de gestion de contenu et commerce électronique – qui reste un sous-ensemble des autres sur le plan technique.
Il est donc indispensable d’assimiler les méthodes de propreté avec PHP, d’autant que ce nettoyage est grandement facilité avec les dernières versions de PHP. Aussi, avec quelques bonnes pratiques et un peu de qualité il est aisé de se protéger des attaques.

Pour rappel (ou pas), voici les menaces les plus connues (pour les solutions voir la doc et les liens plus bas) :

  • Cross-Site Scripting (XSS) :  la vulnérabilité la plus courante et pourtant la plus simple à prévenir. Le principe est de s’introduire dans un site à partir d’un autre pour déposer et exécuter un code malveillant.
    Un exemple très récent et marquant de cette technique est l’attaque de StalkDaily.com par le ver Mikeyy Twitter qui lançait du javascript via des interfaces Twitter infectées.
    Encore une fois les précautions à prendre avec le filtrage de données – celles passées par les URLs en l’occurrence – restent simples.
  • SQL Injection : Il s’agit d’injecter du code en insérant du script dans le programme initial et de le dévier. Par exemple en passant par un champ de recherche mal protégé, il est possible de casser la requête de recherche pour dévier l’objectif du programme et d’accéder à la base de données – et donc de lire ou de modifier le mot de passe administrateur etc. Là encore, les précautions sont aussi simples qu’efficaces.
  • Cross-Site Request Forgery (CSRF/XSRF) : va permettre à un utilisateur d’activer des actions pour lesquelles il n’a pas les droits. Par exemple, en déposant une image sur un forum qui contient en fait un script, lorsque l’administrateur, disposant de tous les droits va lire cette image, des codes malicieux vont s’exécuter – suppression etc.

Pour résumer, les sites sensibles au CSRF sont ceux qui acceptent les actions sur le simple fait de l’authentification à un instant donné de l’utilisateur et non sur une autorisation explicite de l’utilisateur pour une action donnée.

  • Il existe une variante de l’attaque précédente qui s’applique aux Cookies plutôt qu’aux sessions : le Cross Site Cooking. Les méthodes pour s’en prévenir sont les mêmes.
  • Données « inappropriées » : ce n’est pas vraiment une faille, mais c’est une vulnérabilité en ce sens que l’accumulation de mauvaises données peut faire planter un site – hébergement, base de données, affichage. Par exemple, sur MySpace (c’est dire…) il est possible d’altérer le profil utilisateur en modifiant l’affichage par l’insertion d’hacks CSS et HTML…

exploits_of_a_mom

La doc PHP nous dit qu’il existe deux sortes de filtre : la validation et le nettoyage.

La Validation sert à vérifier si une donnée passe certains critères. Par exemple, passer les critères de FILTER_VALIDATE_EMAIL va déterminer si une donnée est une adresse courriel valide, mais ne va pas modifier la données elle-même.

Le nettoyage va nettoyer les données, par exemple en retirant les caractères indésirables. Par exemple, passer une donnée à FILTER_SANITIZE_EMAIL va faire disparaître les caractères inappropriés dans une adresse courriel. D’un autre coté, la donnée n’est pas validée.

Des options sont éventuellement utilisées par la validation et le nettoyage, pour adapter leur comportement à des besoins spécifiques. Par exemple, avec l’option FILTER_FLAG_SCHEME_REQUIRED pour filter une URL, il faut indiquer le protocole utilisée (tel que http://).

Pour les sources et les différentes techniques c’est ici :

[+] – La documentation PHP – what else?…

[+] – Listing et applications des filtres

[+] – Tutoriaux et démonstrations

(encore) des solutions e-commerces Open Source.

Mise à part OS Commerce qui décidément à bien du mal à se rénover, les deux solutions ayant le vent en poupe sont Magento et Prestashop, déjà présentées ici.
Le poids lourd Magento, d’après ce que l’on peut en tirer des différentes expériences, nécessite un serveur dédié et optimisé – cache, load balancing – et nécessite une administration complexe – à relativiser avec ses services et sa robustesse. Prestashop reste donc le plus souple pour la conception comme le déploiement.

Cependant, à défaut d’une étude poussée, voici la liste d’autres solutions ou plugins qui viennent s’intéresser au marché du e-commerce.

drupal

Drupal e-commerce est un ensemble de modules pour vous permettre de créer votre propre boutique en ligne. Il est totalement libre, open source, riche en fonctionnalités et flexible. Le système peut utiliser PayPal, Authorize.net, eWay ou vous pouvez implémenter les vôtres. Les développeurs avancés pourront se pencher sur Ubercart.
zen-cart-logo Zen Cart est peut-être le plus proche de Prestashop pour son côté user-friendly. La solution « bien pensée » par des consultants, des programmeurs et des propriétaires de sites marchands.
cubecart CubeCart est une solution « out of the box » (MySQL et PHP). Avec CubeCart vous pouvez rapidement créer un magasin en ligne san trop de contrainte administrative et le coté vente à l’international est bien géré… à condition de ne pas avoir trop de produits différents et relativement simples (livres numérique, objets sans personnalisation…)
virtuemart VirtuMart : conçu pour Joomla (et donc Mambo) : à réserver au développeur Joomla. Assez dur à prendre en main.
wordpress On pourra s’intéresser également à la foison de plugin WordPress qui mine de rien commence à supplanter les autres CMS par ses fontionnalités et pour sa felxibilité en intégration.

shopify Shopify est construit avec Ruby on Rails / MySQL, et en hébergement Nginx sécurisé par un OpenBSD – bref il faut des profil développeurs assez spécifiques…
getpaid-plone GetPaid pour plone – pour les fans.

CMS jungle : Drupal, Joomla, EzPublish, Typo3, WordPress… WTF ??

Plutôt que de refaire un énième benchmark, intéressons-nous de manière pragmatique et basée sur l’expérience de l’intégrateur, du développeur, du chef de projet et sommes toutes faites, celle l’utilisateur – la mienne en fait…

drupalTous ces CMS PHP sont Open Source et par définition « gratuits », avec quelques innovations pour EzPublish.
Tout d’abord, pour combattre les idées reçues, un tableau comparatif de la présence ou non des fonctionnalités ne sert à rien. Tout simplement  parce que je ne connais pas une seule fonction qui ne se retrouve pas chez l’autre : version mobile, e-commerce, génération PDF de la page, édition en front office, gestion multilingue, gestion multi-sites, workflow, fonctionnalités web 2.0 en tout genre…  Si la possibilité n’est pas native, elle existera sous forme de plugin qui y pourvoira et les communautés respectives sont de toute façon très actives.

eZpublish

Rendons compte, il est des CMS qu’il vaut mieux éviter, parce qu’ils sont obsolètes et/ou franchement complexe à maitriser sur bien des aspects. Typo3 et eZ Publish sont très séduisants sur papier et ont tout pour convaincre les DSI. Mais pour la configuration (déploiement, duplication…), la personnalisation graphique ou technique est un vrai cauchemar pour le développeur/intégrateur qui n’est pas certifié – et encore.  Une fois en place les performances sont au rendez-vous, mais bonjour les sueurs pour mettre en place ou intervenir sur des évolutions…

joomla

Joomla et Drupal sont très en vogue. Malgré une ergonomie discutable de son back-office, Joomla séduit rapidement les contributeurs, là où les développeurs pencheront pour Drupal. Tous deux ont une architecture modulaire et des performances très honorables. Seul le système de template demande un peu d’entraînement (mais reste digeste si l’on compare à typoScript ou eZ Template…). Drupal apparait plus flexible et plus simple en contribution pour les sites à gros volume.

Le plus simple à appréhender pour le développeur et l’intégrateur selon moi est WordPress. Depuis la version 2.7 les fonctionnalités sont très abouties. Il n’y certes pas de génération (de base) de type smarty mais… c’est tant mieux ! Un intégrateur HTML/CSS trouvera très vite ses marques et le codex Template utilisé par les développeurs est d’une puissante simplicité. Le back-office de WordPress est très orienté publication au sens Weblog, toutefois ses fonctionnalités CMS ne sont plus en reste, même s’il faut continuer de lui préférer Joomla ou Drupal pour un site avec des règles métiers complexes. En résumé, il est possible de faire ce que fait l’un avec l’autre. Avant de choisir un CMS, il faut dresser les compétences de ceux qui vont réaliser le site comme de ceux qui vont l’utiliser. Puis mettre en exergue les coûts de formation et de maintenance.

wordpress

Sur la flexibilité et la personnalisation, c’est au cas par cas, mais Drupal semble le mieux loti -pur ressenti. Mais encore une fois WordPress s’en sort très bien aussi avec en prime une vitesse de déploiement inégalée. Enfin une dernière remarque, ces deux CMS sont d’excellents back-offices pour une interface riche type Flex ou Flash grâce notamment à des services très poussés (XML-RPC).

http://fr.youtube.com/watch?v=N96eSZP-jpQ

En marge des CMS Open Source, on pourra s’intéresser à ELGG, pour qui souhaite recréer un facebook – nb : et un langage de template de plus…ou Magento pour qui souhaite recréer Amazon.

N’est pas Ajax qui veut…

Une preuve supplémentaire que si l’AJAX permet une souplesse ergonomique et peut être responsable du succès d’un site, un programme Javascript mal structuré/optimisé peut se révéler fatal.

C’est le cas avec le célèbre Netvibes qui fait planter firefox (dans mon cas ma machine…) si on le laisse tourner dans un onglet – au passage le résultat est le même si l’on laisse beaucoup d’onglets ouvert sous firefox pendant quelques heures…

Voici une série de tips très efficace pour optimiser son navigateur (on passe de 180 à 30 mo en mémoire à titre d’exemple).

Mantis 1.1.0a4 Released

MANTIS est un outil de gestion d’anomalies. Il s’agit d’un outil libre, écrit en PHP il est tout à faire envisageable de le personnaliser. L’utilisant dans mon contexte profesionnel je dois dire qu’il n’est pas si usine à gaz que ça..Mantis
C’est donc un outil idéal que l’on peut utiliser à la fois pour gérer les anomalies de recette ou les évolutions en maintenance.

Je recommenderai cependant de le « charter » un minimum si le contexte utilisateur est non-averti – notons à ce sujet que l’application est multilingue.

A noter la nouvelle version de mantis (alpha) et la présence d’un Blog dédié et d’une demo en ligne.

Silverlight developer reference

Si vous êtes passé à côté et que vous êtes concerné :
Silverlight map

Les vrais standards CSS – Partie I : la guerre des normes

Introduction : De l’utilité du Doctype.

Choisir un bon doctype influera énormément sur votre perte de cheveux en venir, lorsque vous essaierez d’aligner une image de fond à droite sur IE5/Win alors qu’elle part de 2 pixels à gauche sur Firefox et qu’elle n’apparaît qu’à moitié dans IE/MAC…
Il y a tout un tas d’articles sur le Web traitant de la définition du doctype et de leur écriture.
Le meilleur (compromis) actuellement semble être :

DOCTYPE html PUBLIC « -//W3C//DTD XHTML 1.0 Transitional//EN » « http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd »

Il permet assez de souplesse tout en obligeant une certaine rigueur dans la structure et il me semble que c’est celui qui donne le résultat le moins hétéroclite d’un navigateur à l’autre.

» De l’utilité du doctype
» Les différents doctypes

La problématique : les standards ne sont pas standardisés.
Sous ce titre barbare se cache une réalité : IE5, IE6 et IE7 windows (bravo), IE5 MAC, Firefox, Opera ne réagisse pas de la même façon lorsque l’on pousse dans leur derniers retranchements le XHTML et/ou CSS. Suis-je obligé d’évoquer Safari ?…

Remplacement de texte par de l’image

Voici plusieurs techniques pour insérer une typographie riche – i.e. remplacer du texte par une image, tout en respectant l’accessibilité et l’indexation par les moteurs de recherches : bluffant !

» /!\ problèmes d’accessbilité avec ces techniques et .
» La technique ultime.

» Une technique en php… prometteur mais… je ne suis pas arrivé à faire tourner….

» Surtout pour les titres, en css brut.

» Solution simple et compatible.

» pas mal du tout.

» En javascript.
Il s’agit ici plus d’un detect pour savoir si le navigateur autorise l’affichage d’image.

Hack CSS – les éviter…

Pour parer à un certain manque de compatibilité, malgré les standards, entre navigateurs (cross-browsers), on utilise des filtres (hacks) qui permettent d’utiliser un attribut selon le navigateur. Par exemple, pour qu’un attribut ‘width:2px’ soit lisible uniquement par IE, on écrira ‘_width:2px’.
» IE7 est une librairie JavaScript qui fournit une couche d’abstraction des standards W3C pour Microsoft Internet Explorer 5+. Les propriétés et sélecteurs CSS2/3 sont supportées et de nombreux bugs de rendu sont fixés.
/!\ Quelque soit le navigateur, il est certain que les versions futures n’autoriseront plus ce genre de rafistolage…
» Entre standards et hack, Microsoft trouve une parade… histoire de ne pas respecter les standards: ici
» Une alternative aux hacks.

» À utiliser avec parcimonie

» Les filtres CSS.

ouvrir