jeudi 23 octobre 2014

Etude comparative des Frameworks php

Etude comparative des Frameworks php


Qu'est ce qu'un framework ?

Selon Wikipedia,
"Un framework est un ensemble d'outils et de composants logiciels organisés conformément à un plan d'architecture et des patterns, l'ensemble formant ou promouvant un « squelette » de programme. Il est souvent fourni sous la forme d'une bibliothèque logicielle, et accompagné du plan de l'architecture cible du framework.

Un framework est conçu en vue d'aider les programmeurs dans leur travail. L'organisation du framework vise la productivité maximale du programmeur qui va l'utiliser — gage de baisse des coûts de construction et maintenance du programme. Le contenu exact du framework est dicté par le type de programme et l'architecture cible pour lequel il est conçu. "

Pour moi voici comment je voie un framework

Un framework est un cadre de travail ou cadre d'application offrant un ensemble d'outils et de briques logicielles, qui permettent d’automatiser certaines parties du développement d'applications.

Le développement adopte alors des conventions et devient rigoureux et standardisé. Il assure ainsi une meilleure maintenabilité, tout en favorisant capitalisation,  industrialisation et ré utilisabilité du code.

Dans le cadre d’une entreprise, ces notions sont largement prises en compte.

Le framework n’est autre qu’une  super collection de bibliothèques permettant l’application d’un cadre de développement destiné à donner toute sa puissance en s’appuyant sur des modèles de conception standard et réputés.

L’utilisation  d'un framework présente plusieurs avantages :

  •  l’accélération du temps de développement, 
  • la conservation d’un code homogène 
  • une pérennité certaine des projets. 
  • les applications sont plus facilement sécurisées.

Si le gain de temps est indéniable, en terme de qualité, le gain est remarquable.

L’élaboration d’un framework représente le travail d’une multitude de personnes qui s’appuient sur l’expérience de l’ensemble des utilisateurs, pour détecter et corriger les problèmes ou failles de sécurité.
Par conséquent les frameworks sont en général mieux conçus et plus robustes qu’une application développée par un seul programmeur.

Un nombre important de frameworks est disponible dans de nombreux langages. Il n’est pas toujours évident de trouver le sien. Il n'y a pas de framework idéal, chacun possède ses avantages et ses inconvénients.
Pour faire le bon choix il convient, après une première présélection,  d’en tester plusieurs afin de déterminer celui répondant le mieux  à vos besoins.

Les frameworks PHP :

Le langage PHP contient nativement une innombrable quantité de fonctions et de classes sensées faciliter le travail  du développeur.  Malgré tout, force est de constater que de nombreuses tâches répétitives restent à gérer ceci du au fait de vouloir faciliter leurs utilisations.
Le langage PHP bien qu'ayant plusieurs fonction de façon native manque encore de quelques chose raison pour laquelle de nombreux développeur travaillent nuits et jours pour l'améliorer.

L’utilisation d’un framework, ajoute encore d’autres classes et fonctions appelées à prendre  en charge ces tâches récurrentes, communes à de nombreux projets.

Parmi celles-ci, il convient de citer : la gestion des utilisateurs, des bases de données, le système MVC…

Parmi la multitude d’excellents frameworks PHP j'ai choisi de comparer six d’entre eux,  adoptant tous la structure MVC (Model-View-Controller ou Modèle-Vue-Contrôleur) :

  1. Le Modèle : c’est le comportement de l'application. 
  2. La Vue : c’est l'interface manipulée par l'utilisateur. 
  3. Le Contrôleur : c’est le gestionnaire des événements de mise à jour de la vue et de synchronisation des informations par le modèle.


Ces frameworks sont parmi les plus connus et renommés :
cakePHP
Code Igniter
Yii
Symfony
Laravel
Zend

Comment définit-on le meilleur framework PHP ?

Il convient avant tout de définir des critères avant d’élire le meilleur framework PHP. En voici quelques uns :

Prise en main : dans tous les frameworks, il est nécessaire de passer quelques temps afin de le prendre en main. Cette période peut être plus ou moins longues (de quelques heures à plusieurs semaines).
Flexibilité : le framework peut imposer des contraintes très fortes pour obliger tous les développeurs à développer de la même façon. Mais cela peut finir par être limitant.
Taille des projets : les petits projets peuvent être développer avec un framework ultralight.
Documentation : une documentation complète est un réel plus !
Performance : certaines frameworks sont trop gourmands. Même le moindre « Hello World » peut nécessiter l’appel à plus de 100 fichiers différents.
Communauté : un forum actif sera synonymes de personne prête à vous aider en cas de problème
Évolutivité : de quand date la dernière mise à jour ?
Toutes ces critères peuvent être plus ou moins pondérés en fonction de ce que vous attendez d’un framework. Pour ma part, je souhaitais un framework simple à prendre en main (en l’espace de quelques jours maximums), assez flexible et très bien documenté.


CakePHP
Comme son nom l’indique, CakePHP, est un framework PHP. Il est relativement simple à prendre en main comparé à certains autres frameworks PHP tels que Zend, pour ne citer que l’un des plus connus

CakePHP permet le développement rapide d’applications (RAD : Rapid Application Development) et simplifie leur maintenance.

Projet open-source démarré en 2005, CakePHP convient autant aux développeurs débutants qu’aux confirmés. Il est basé et conçu sur le principe Ruby on Rails.

Les principes de base de CakePHP sont avant tout sa robustesse et sa simplicité de mise en œuvre quelque soit le type d’application. Il la rend facilement extensible et personnalisable avec l’architecture MVC.

Les principales caractéristiques de CakePHP :

  •  Compatible PHP 4 et PHP 5.
  •  Pas de configuration nécessaire.
  •  Utilisation d’une simplicité peu commune.
  •  Communauté conséquente et active.
  •  Licence MIT (toute application développée peut être vendue).
  •  Entièrement conçu et maintenu par l’équipe de développeurs.
  •  Intègre l’architecture MVC.
  •  Gestion facilitée des bases de données grâce à Active Record.
  •  Entièrement Orienté Objet (OO).
  •  Nombreux outils de développement (ajax, formulaires…).
  •  Génération d’applications CRUD (Create/Read/Update/Delete)

Son architecture extensible permet de développer et maintenir les applications en optimisant les tâches du développeur et favorisant un gain de productivité non négligeable.

Ces avantages sont rendus possibles grâce à l’adoption des systèmes MVC (Modèle-Vue-Contôleur) et ORM (Object-Relational Mapping).
Framework d’applications rapides (RAD) CakePHP est avant tout de conception robuste. Il prend en charge tous les aspects d’une page web, de la requête initiale à l’interface finale. En appliquant les principes de l’architecture MVC, il permet toute forme de personnalisation et d'extension de chaque application.

Reposant sur un concept simple et puissant, une organisation structurée, CakePHP se positionne parmi les meilleurs frameworks et offre aux développeurs toutes les facilités nécessaires à l’élaboration rapide d’applications sérieuses et complexes en leur assurant consistance et logique.


CodeIgniter


CodeIgniter est un framework PHP puissant, bien que léger, basé sur le fonctionnement de Ruby on Rails et adoptant l’architecture MVC (Modèle-Vue-Contrôleur).
Développé à l’origine pour les propres besoins de l’entreprise EllisLab en 2006, il a depuis adapté le statut open source.
Codelgniter est particulièrement simple à utiliser, performant et d’une vitesse d’exécution remarquable.
Il est fortement recommandé aux développeurs débutants
Les principales caractéristiques de CodeIgniter :

  •  Compatible PHP 4 et PHP 5
  •  Simplicité de prise en main
  •  Intégration de l’architecture MVC
  •  Nombreuses librairies
  •  Complètement orienté objet
  •  Importante communauté très active (anglophone en majorité)
  •  Abondante documentation
  •  Souplesse et évolution constante

CodeIgniter est un framework PHP qui comme tout framework permet de réduire le temps de développement et d’optimiser le code d’une application.
Il est particulièrement souple et adapté aux débutants car aisément compréhensible.
Moins connu que CakePHP ou Zend, CodeIgniter est maintenu par la Société EllisLab et remarquablement documenté.
Son avenir semble prometteur, à en juger par l’importance de sa communauté.
CodeIgniter est puissant bien que nécessitant peu de ressources.
Il est en constante évolution et son importante collection de librairies contribue largement aux gains de productivité que l’on attend d’un framework, en matière de développement d’applications de toutes natures..
Sa simplicité d’utilisation par rapport à Symfony ou Zend contribue à sa popularité au sein des développeurs PHP.
CodeIgniter est le framework idéal pour le développement de petites et moyennes applications. En effet il nécessite peu de ressources tout en offrant un maximum de fonctionnalités.
Son système de cache lui procure d’excellentes performances et minimise l’impact sur le chargement des pages.

Ses principaux atouts : extrème légèreté, robustesse et fiabilité. Facile à installer et acceptant de multiples environnements, CodeIgniter à tout pour séduire.

Selon un test réalisé il y a quelques mois par Richard Goutorbe, consultant informatique à Montpellier, l’utilisation de CodeIgniter pour le développement d'applications PHP offre un gain de productivité de 50%. La perte de performance liée à son exécution est de l'ordre de 10%, très largement compensée par une augmentation de fiabilité et de maintenabilité due à la réutilisation du code.

Yii

Le Yii Framework ("Yes, It Is") est un framework pour PHP 5 et utilise le paradigme de programmation orientée objet. Il est destiné au développement d'applications Web. Yii nécessite minimalement la version 5.1.0 de PHP. Une documentation complète est disponible. La communauté autour du projet est très active. Le créateur et développeur principal de Yii est Qiang Xu, qui a également développé et maintenu le framework PHP Prado pendant 3 ans. Yii est d'ailleurs le successeur officiel de Prado.

Il offre notamment les fonctionnalités suivantes :


  • de hautes performances ;
  • une architecture Modèle-Vue-Contrôleur ;
  • un accès aux bases de données par DAO/ActiveRecord ;
  • les fonctions nécessaires pour la gestion de l'internationalisation (I18N/L10N) ;
  • la gestion de caches ;
  • le support de AJAX via l'intégration de jQuery ;
  • le contrôle d'accès par la gestion de rôles utilisateurs (RBAC) ;
  • la génération automatique du code PHP pour les opérations de base (création, lecture, mise à jour et suppression) sur la base de données (scaffolding) ;
  • le contrôle des saisies utilisateurs sur les formulaires ;
  • la notion de widgets ;
  • les événements sur les éléments des pages (boutons, liens...) ;
  • la gestion de thèmes pour l'habillage des sites ;
  • le support des services Web ;
  • la possibilité d'ajouter des fonctions via un système de plugins ;
  • le support des tests unitaires et fonctionnels.
  • la migration de bases de données ;

Son architecture extensible permet de développer et maintenir les applications en optimisant les tâches du développeur et favorisant un gain de productivité non négligeable.

Ces avantages sont rendus possibles grâce à l’adoption des systèmes MVC (Modèle-Vue-Contôleur) et ORM (Object-Relational Mapping).


Symfony

Symfony est un framework open source écrit en PHP 5, utilisant l’architecture MVC.
Conçu dès l’origine en 2005 par une société française, Sensio Labs, bien connue pour ses idées novatrices dans le développement web, Symfony est robuste, fiable, très puissant, et s’adapte à un très grand nombre de configurations.
Développé par une équipe de professionnels expérimentés, il est spécialement dédié à la conception d’applications moyennes à très lourdes, c’est pourquoi il trouve tout naturellement sa place dans l’entreprise.
Ses multiples fonctionnalités et son abondante documentation ont fait de Symfony, en quelques années, l’un des frameworks PHP les plus utilisés.
Les principales caractéristiques de Symfony :

  •  Compatible PHP 5 totalement orienté objet.
  •  Intègre l’architecture MVC et la méthode ORM.
  •  Licence MIT (tout ce qui est réalisé avec Symfony peut être vendu).
  •  Extensible et modulaire.
  •  Supporte ajax.
  •  Système de templates.
  •  Importante communauté très active.
  •  Très grand nombre de traductions.
  •  Conçu pour une utilisation professionnelle.

Comme chaque framework le but de Symfony est d’abord de faciliter et d’accélérer le temps de développement par sa puissance, tout en optimisant le code en en permettant sa réutilisation, en toute sécurité.

Un des nombreux avantages de Symfony est sa facilité d’installation sur la plupart des configurations existantes.

Sa compatibilité avec la quasi-totalité des bases de données fait de Symfony un framework que les développeurs web confirmés ont peu de difficultés à prendre en main rapidement.

Bien plus qu’un framework MVC, Symfony réunit les meilleurs outils de développement PHP afin d’aborder avec cohérence la réalisation d’applications web.

L’architecture, outils et composants de Symfony favorisent et facilitent la conception d’applications complexes avec une aisance et une rapidité certaine.

Basé sur l’expérience, fiable et multi-fonctionnel, Symfony gagne de jour en jour en notoriété et reconnaissance.

Les nouveaux arrivants trouvent auprès de l’importante communauté, appui, documentation et contributions.

En effet, le développement actuel de Symfony repose pour une bonne partie sur l’ajout de modules ou plugins (plus de 600 aujourd’hui), très faciles à produire et utiliser.

Fabien Potencier, créateur et responsable du développement de Symfony et PDG de Sensio Labs, confirme l’adoption de cette méthode dans les évolutions futures. Il désigne Zend comme son principal concurrent.


Laravel

Laravel a été créé par Taylor Otwell1 en juin 20112.

Le référentiel Larave/laravel présent sur le site GitHub contient le code source des premières versions de Larave. À partir de la quatrième version, le framework est développé au sein du référentiel Laravl/framework.

En peu de temps, une communauté d'utilisateurs du framework s'est constituée.

La quatrième version de Laravel est écrite en PHP 5.3.73 et son installation est basée sur le gestionnaire de paquets Composer.

Dans une syntaxe élégante, Laravel fournit des fonctionnalités en termes de routage de requête, de mapping objet-relationnel (un système baptisé Eloquent implémentant Active Record), d'authentification, de migration de base de données, de gestion des exceptions et de test unitaire1.

L'ensemble des éléments constitué de la documentation du framework, de tutoriels et de copies d'écran permettent l'apprentissage du framework.


Zend

Zend Framework est un framework PHP 5 créé par la société Zend Technologies, appelée aussi The PHP Company car fondée par les pères du PHP moderne : Andi Gutmans et Zeev Suraski. Il est distribué open source sous la New BSD license.
De part son histoire, Zend tient une place particulière dans l’univers des Frameworks PHP.
Bénéficiant d’une communauté massive à travers le monde, il est aujourd’hui à n’en pas douter le plus connu et utilisé des frameworks.

Notons que son utilisation requiert toutefois une connaissance approfondie de PHP.

Zend Technologies l’a développé en privilégiant les « bonnes pratiques ». Il est totalement orienté objet et intègre l’architecture MVC.

Les principales caractéristiques de Zend Framework :


  •  Compatible PHP 5
  •  Conception totalement orientée objet
  •  Intègration de l’architecture MVC (Modèle-Vue-Contrôleur)
  •  Faible dépendance des composants entre eux, permet leur utilisation individuelle (use-at-will)
  •  Puissant, extensible et modulaire
  •  Imposante communauté hyper-active
  •  Fortement adapté à l’environnement professionnel
  •  Développeurs externes respectant la licence open source
  •  Alliés et contributeurs hors normes : Microsoft, Google…


Zend Framework peut être considéré actuellement comme le leader des Frameworks PHP.

Sa souplesse est telle, qu’à partir d’une base quelconque, il est possible de créer une liaison avec d’autres frameworks ou composants.
D’une puissance, robustesse et fiabilité à toute épreuve, la conception de Zend Framework est particulière et le différencie des autres frameworks PHP.

En effet, ses composants ont la faculté d’être utilisés individuellement, car très peu dépendants des uns envers les autres.

Par contre, utilisés ensemble dans la librairie standard de Zend Framework, ils donnent au framework sa redoutable puissance.

De même, bien que l’architecture MVC soit présente nativement dans Zend Framework, elle n’est pas imposée mais optionnelle.

Toujours à la pointe du développement, de multiples composants permettent l’accès aux services web les plus modernes.

Le principal moteur du projet reste évidemment Zend Technologies, mais certaines sociétés extérieures ont développé leur propres composants et les ont mis ensuite à la disposition de la communauté. Parmi ces contributeurs exceptionnels, ils convient de citer Google et Microsoft, deux des plus importants acteurs du web.

Zend Framework est en perpétuel développement, et chaque entreprise intéressée peut développer ses composants, à la seule condition de les mettre gracieusement à la disposition des utilisateurs, dans le respect de la licence.

Le concept PHP reste l’esprit de Zend Framework : libre, ouvert, simple, efficace et puissant !!!



Récapitulatif 
Nom
PHP
Modèle
ORM
Template
Cache
Url conviviales
Validation de formulaire
Ajax
Extension
Générateur de code
Cake PHP
4/5
MVC
AR
PHP
0
0
0
0
0
0
CodeIgniter
4/5
MVC
AR
PHP
0
0
0
N
0
N
Yii
5
MVC
DAO
Twig ou Smarty
0
0
0
0
0
0
Laravel
5
MVC
AR
PHP 
0
0
N
N
0
N
 Symfony
5
MVC
Propel
PHP ou smarty
0
0
0
0
0
0
Zend
5
MVC
/
PHP
0
0
N
N
N
N

Légende
0 = oui
N= non
AR= Active Record
MVC = Modèle-Vue-Contrôleur
Propel= Mapping objet relationnel (ORM)
DAO= Data Access Object

Conclusion

Pour finir, ZEND me semble très complet, et son formalisme est certainement très apprécié pour les gros projets. Par ailleurs, on peut aussi certainement l’utiliser aussi pour de petits projets à condition de l’avoir déjà pratiqué auparavant. Ainsi cela ne me semble pas envisageable de l’utiliser dans le cas du développement rapide d’applications webs à réaliser facilement et où le temps d’apprentissage est limité à quelques demi-journée.

C’est pourquoi je suggère d’utiliser YII pour les futurs applications webs. Cela permettra de mettre un peu de formalisme dans les projets, tout en laissant tout de même de nombreuses possibilité de dérive et d’avoir un temps de formation réduit au strict minimum (de l’ordre de quelques heures pour comprendre le fonctionnement pouvoir commencer à réaliser quelque chose de concret).

mercredi 22 octobre 2014

Comment sécuriser son site internet

Salut à tous et à chacun.

Comment sécuriser son site internet

De nos jours plusieurs site sur internet récupères des fichiers chez le utilisateurs et certains profitent ainsi pour leurs envoyer des scripts pour prendre le contrôle total ou partiel de leur site.
Voici comment ils procèdent en général:

  1. ils recherchent un site qui leur demande d’envoyer un fichier;
  2. ils écrivent un script qui fera certainement des chose mauvaises une fois dans votre site,
  3. ils l'envoient à travers le formulaire que votre site propose,
  4. une fois cela fait, ils exécute le script à partir de votre site.
Voici donc quelques astuces qui vous aiderons à empêcher cela:

  1. Généralement il n'est pas conseiller récupéré les fichiers autres que les docs( .docx, .doc, .rtf, .odt, .pdf) et les images (.png, .jpg, .jpeg, .gif) chez le client. 
  2. En plus dans le code il faut toujours vérifier que le fichier qu'il upload respecte les extensions que vous avez renseignez.
  3. En plus de cela ne pas directement placer le fichier uploadé dans son répertoire final 
  4. Placer le fichier uploadé dans un répertoire temporaire 
  5. A la fin du processus, vérifiez une fois de plus que l'extension est correct plus déplacez le vers son répertoire final. 
  6. avant de la déplacer, assurez vous que le fichier soit renommé.  
Ainsi il n'aura injection des script dans votre site. 

Si cela vous a aidé alors partagez.........