Bonnes Pratiques Web & Cloud
58.8K views | +5 today
Follow
Bonnes Pratiques Web & Cloud
Administration cloud et développement web
Curated by Mickael Ruau
Your new post is loading...
Your new post is loading...

Popular Tags

Current selected tag: 'PHP'. Clear
Scooped by Mickael Ruau
Scoop.it!

Tiger Platform: Under the Hood

Tiger Platform: Under the Hood | Bonnes Pratiques Web & Cloud | Scoop.it
A Fully-functional Modularized Application Tiger isn’t just a server environment where you can start to built stuff-Tiger is also a fully-functional modularized application framework that is already up and running with all of the features you need to start building your next great SaaS product idea. There are pre-built modules for management of: Organizations, Users, […]
No comment yet.
Scooped by Mickael Ruau
Scoop.it!

Pomm - PHP / Postgresql object model manager | home

Pomm - PHP / Postgresql object model manager | home | Bonnes Pratiques Web & Cloud | Scoop.it
Pomm is an open source database access framework in PHP dedicated to the Postgresql™ database. It offers an alternative approach than ORM to using database in web developments.
Pragmatic approach

Tired of your ORM limitations ?
Since 6 years, Pomm sets the database at developers fingertips without the arduousness of an abstraction layer.
It grants developers with unlimited access to SQL and database features while proposing a high level API.

Efficient & easy

Be productive in a matter of seconds.
With its client oriented kernel, Pomm2 gives an easy access to powerful Postgresql features. It also proposes a CLI tool to help developers inspect database structures and generate mapping classes.
Using a modular distribution is the best way to comply with everyone's way of doing the things.
Enterprise ready

On the shoulders of giants
Pomm is dedicated to let developers the full usage of Postgresql™, the most advanced open source database.
It has a comprehensive documentation and modules to be used with Symfony™. Pomm2 complies with PSR-2, semver standards and proposes a controlled cycle of releases.
No comment yet.
Scooped by Mickael Ruau
Scoop.it!

Pomm - PHP / Postgresql object model manager | Pomm reported to work with MySQL !

Pomm - PHP / Postgresql object model manager | Pomm reported to work with MySQL ! | Bonnes Pratiques Web & Cloud | Scoop.it


I must say, I am impressed. Some people reported they have been able to use Pomm with Mysql just by changing the way the DSN was handled by PDO in the Connection class. Of course the database introspection does not work, but they used Postgres to generate their model files and just change the DSN to get it to work with MySQL.

All basic types like string, int, timestamp seem to work, I have no information yet on float and boolean and I have no hope HStore, Circle and other unsupported data type will work with MySQL. Anyway it may cover 90% of simple webstite's needs ;)

No comment yet.
Scooped by Mickael Ruau
Scoop.it!

Retour d'expérience: Pomm est mûr, abandonnons les ORM — Sismic Blog — Sismic

Chez Sismic, nous utilisons Pomm sur tous nos projets. Je vais vous retracer les étapes qui ont constituées notre passage de Propel (ORM) vers Pomm.

Comme beaucoup de développeurs PHP, j'ai débuté avec MySQL et PDO. Les projets se succèdent, un jour on est lassé d'écrire du SQL et très vite on se retrouve à utiliser un ORM.

A ce moment là une nouvelle vie commence, on se sent léger et puissant avec l'impression de pouvoir se concentrer sur son code métier.

L'ORM possède de nombreux avantages, l'un des principaux étant de pouvoir s'interfacer avec plusieurs SGBD.

Seulement, cet avantage est également sa plus grande faiblesse. En effet pour garantir une parfaite compatibilité, il est obligé d'utiliser des fonctionnalités communes, et donc de faire l'impasse sur certaines spécificités propres à tel ou tel moteur de base de données qui n'éxistent pas partout.

Si cela n'est pas dommageable pour Mysql, c'est bien différent avec PostgreSQL.
No comment yet.
Scooped by Mickael Ruau
Scoop.it!

Utiliser les procédures stockées MySQL et étendre MySQLi dans PHP

Utiliser les procédures stockées MySQL et étendre MySQLi dans PHP | Bonnes Pratiques Web & Cloud | Scoop.it
Jusque récemment j'ai toujours utilisé les fonctions MySQL génériques incluses dans PHP pour me connecter à mes bases de données. Cela provient du fait que j'ai appris à me connecter aux bases de cette manière et que je n'ai jamais eu réellement besoin d'une alternative. Sur un nouveau projet sur lequel je suis en train de travailler, j'ai décidé de jeter un œil sur la librairie MySQLi (MySQL amélioré). La plupart des fonctions sont les mêmes mais peuvent maintenant être utilisées dans un contexte orienté objet ce qui semble pour moi un grand avantage. Ci-dessous je me penche sur l'implémentation de MySQLi et l'extension avec votre propre code, tout en l'utilisant pour exécuter des procédures stockées.
No comment yet.
Scooped by Mickael Ruau
Scoop.it!

PHP: The Right Way

There’s a lot of outdated information on the Web that leads new PHP users astray, propagating bad practices and insecure code. PHP: The Right Way is an easy-to-read, quick reference for PHP popular coding standards, links to authoritative tutorials around the Web and what the contributors consider to be best practices at the present time.

There is no canonical way to use PHP. This website aims to introduce new PHP developers to some topics which they may not discover until it is too late, and aims to give seasoned pros some fresh ideas on those topics they’ve been doing for years without ever reconsidering. This website will also not tell you which tools to use, but instead offer suggestions for multiple options, when possible explaining the differences in approach and use-case.

This is a living document and will continue to be updated with more helpful information and examples as they become available.
Translations

PHP: The Right Way is translated into many different languages:

English
Español
Français
Indonesia
Italiano
Polski
Português do Brasil
Română
Slovenščina
Srpski
Türkçe
български
Русский язык
Українська
العربية
فارسى
ภาษาไทย
한국어판
日本語
简体中文
繁體中文

Book

The most recent version of PHP: The Right Way is also available in PDF, EPUB and MOBI formats. Go to Leanpub
How to Contribute

Help make this website the best resource for new PHP programmers! Contribute on GitHub
Mickael Ruau's insight:
 
 
No comment yet.
Scooped by Mickael Ruau
Scoop.it!

PHP moderne — Fast PHP 2021

Quelques notions un peu plus avancées en PHP qu’il est bon de connaître et d’utiliser à bon escient !
Mickael Ruau's insight:

 

 

No comment yet.
Scooped by Mickael Ruau
Scoop.it!

JetBrains et d'autres entreprises unissent leurs forces pour lancer la Fondation PHP, après la décision du contributeur clé Nikita Popov de rester un peu en retrait du développement du langage

JetBrains et d'autres entreprises unissent leurs forces pour lancer la Fondation PHP, après la décision du contributeur clé Nikita Popov de rester un peu en retrait du développement du langage | Bonnes Pratiques Web & Cloud | Scoop.it
Au cours des 26 ans d'histoire de PHP, le langage a été activement développé par un grand nombre de personnes, telles que Rasmus Lerdorf, Zeev Suraski, Andi Gutmans, Nikita Popov et bien d'autres. En 2021, PHP est dans une autre phase de son évolution après que Nikita Popov a décidé d'être plus en retrait du développement du langage pour se concentrer sur d'autres projets. Ce départ soudain d'un tel contributeur clé du projet ne sera pas sans conséquence sur le développement de PHP. C'est pourquoi, JetBrains et d'autres entreprises ont décidé d'unir leurs forces pour lancer la Fondation PHP avec pour mission d'assurer la pérennité et la prospérité du langage.
Mickael Ruau's insight:

Pour démarrer plus vite et récolter tout de suite les bénéfices de la Fondation, JetBrains et ses pairs ont décidé de le faire via Open Collective. Open Collective est un fournisseur de solutions foundation-as-a-service qui gère les aspects juridiques et comptables. Il est approuvé par de nombreux projets open source, notamment Vue.js, Open Web Docs, webpack, Yii Framework, entre autres.

Avec les dons prévus de toutes les entreprises participantes jusqu'à présent, il est prévu de collecter environ 300 000 $ par an. JetBrains pour sa part a l'intention de contribuer à hauteur de 100 000 $ par an. Avec les fonds, ils espèrent être en mesure de payer les salaires du marché aux développeurs du langage PHP. Plus ils seront en mesure de collecter des fonds, plus les développeurs pourront travailler à plein temps sur PHP.

(...)

Activités de la Fondation

Les fonds collectés par la Fondation peuvent être utilisés pour engager les services de contributeurs PHP afin de faire avancer le développement du langage. La tâche principale de la Fondation sera de financer les développeurs pour travailler sur PHP. La Fondation et toute personne qui en reçoit des fonds seront tenues de respecter un code de conduite.

Sélection pour financement

Tout contributeur à php-src peut demander un financement à la Fondation. La Fondation cherche à financer à la fois des développeurs à temps partiel et à temps plein, et même si vous avez d'autres sources de revenus, cela ne vous empêche pas de signer un contrat avec la Fondation. Notons toutefois que les postes ne sont pas permanents et peuvent être annulés avec l'accord de l'administration de la Fondation. Les candidatures sont ouvertes depuis le 22 novembre et le resteront pendant 28 jours, c'est-à-dire jusqu'au 20 décembre prochain.

Vous pouvez postuler en utilisant ce formulaire.

Dans un premier temps, l'administration temporaire se basera sur son expertise pour décider qui devrait obtenir un financement. Une fois les développeurs sélectionnés, l'administration temporaire va formaliser et documenter les processus de travail avec l'aide des membres de la communauté PHP. Le processus RFC actuel ne changera pas et les décisions concernant le langage seront toujours laissées à la communauté PHP Internals. Vous pouvez suivre les mises à jour de la Fondation PHP sur Open Collective et @ThePHPF.

No comment yet.
Scooped by Mickael Ruau
Scoop.it!

final (Java) — Wikipédia

final (Java) - Wikipédia

En langage Java, le mot-clé final indique qu'un élément ne peut être changé dans la suite du programme. Il peut s'appliquer aux méthodes et attributs d'une classe et à la classe elle-même. Aussi, il peut s'appliquer sur les paramètres d'une méthode et sur les variables locales.

No comment yet.
Scooped by Mickael Ruau
Scoop.it!

Cours sur les bonnes pratiques de programmation en PHP

Cours sur les bonnes pratiques de programmation en PHP | Bonnes Pratiques Web & Cloud | Scoop.it

Ce tutoriel est une traduction adaptée du livre électronique « PHP, The Right Way » écrit par Josh Lockhart, Phil Sturgeon avec plusieurs contributions d'experts PHP. Le livre est inspiré de la documentation officielle de PHP.

Mickael Ruau's insight:

Table des matières

No comment yet.
Scooped by Mickael Ruau
Scoop.it!

6 Chrome & VS Code Extensions For Backend Developers

Extensions can make our life as a developer a little easier. Whether they are Visual Studio Code or... Tagged with tooling, programming, vscode, codequality.
No comment yet.
Scooped by Mickael Ruau
Scoop.it!

Pomm - Postgresql / PHP Object Model Manager

Pomm - Postgresql / PHP Object Model Manager | Bonnes Pratiques Web & Cloud | Scoop.it

Pomm  est un  gestionnaire de modèle objet  dédié au moteur de base de données PostgreSQL. Qu'est-ce qu'un gestionnaire de modèle objet ?

C'est avant tout un  hydrateur  d'objets qui utilise un convertisseur entre PHP et PostgreSQL pour assurer qu'un booléen dans Postgres sera vu depuis PHP comme tel, de même pour les tableaux, le type clé -> valeur 'HStore', les types géométriques, XML, JSON, etc.

Cette fonctionnalité de conversion est très importante, car le typage dans PostgreSQL est un élément incontournable de la définition du schéma par contrainte. La possibilité d'enrichir PostgreSQL avec des types personnalisés est prise en compte.

C'est également un gestionnaire de modèle orienté objet, car Pomm crée des classes de mapping qui lient les structures SQL avec des objets PHP. Nous verrons là encore les grosses différences entre Pomm et les ORM classiques et comment utiliser la puissance du SQL de Postgres au service d'une petite application. ♪

Mickael Ruau's insight:

En quoi Pomm est-il différent d'un ORM et pourquoi l'utiliser ?

Il est difficile de répondre rapidement à cette question sans tomber dans l'ornière du débat pro / anti ORM. L'auteur développe avec PHP et PostgreSQL depuis plus d'une dizaine d'années. L'avènement des ORM a certes changé la façon d'utiliser les bases de données en apportant des vraies couches modèles au sein du MVC, mais ils ont également apporté un certain nombre d'inconvénients très handicapants pour les habitués des fonctionnalités des bases de données en général et de PostgreSQL en particulier. Pomm part donc du parti pris de ne fonctionner qu'avec PostgreSQL et son objectif est de permettre aux développeurs PHP de tirer parti de ses fonctionnalités au maximum.

Une des limitations des ORM est qu'en calquant une logique orientée objet sur des structures SQL, ils figent ces dernières suivant la définition de classes (PHP ou autres) alors que :

  • les bases de données ne manipulent que  des ensembles  de tuples ;
  • que les opérations ensemblistes sont insensibles à la taille de ces tuples ;
  • que le système de projection (SELECT) a été conçu pour les  façonner.

Un ensemble de base de données est donc par essence tout sauf figé. Nous verrons comment Pomm tire parti de la souplesse de PHP pour créer des objets élastiques s'adaptant à notre besoin. Ceci est d'autant plus appréciable que PostgreSQL sait manipuler des entités comme des objets, nous verrons comment faire des requêtes « orientées objet » en SQL.

Un autre des problèmes des ORM est lié à la couche d'abstraction : ils proposent un langage pseudo SQL orienté objet qui se cantonne souvent au plus petit commun dénominateur des fonctionnalités partagées entre tous les moteurs de bases de données et il est souvent délicat de trouver comment faire quelque chose qu'on sait déjà faire en SQL classique. Nous verrons comment Pomm permet de faire directement des requêtes SQL sans les inconvénients de la construction fastidieuse - que probablement certains d'entre vous ont connu - qui menait à des scripts peu maintenables et peu testables.

No comment yet.
Scooped by Mickael Ruau
Scoop.it!

The 13 Best Telosys Alternatives (2021)

The 13 Best Telosys Alternatives (2021) | Bonnes Pratiques Web & Cloud | Scoop.it
What are the best Telosys alternatives? A list based on our research ✅jHipster, ✅Spring Roo, ✅cloudlayer.io, ✅CUBA.platform, ✅OpenXava, ✅PHP Generator for MySQL, and ✅Codesmith.
Mickael Ruau's insight:

elosys is a lightweight code generator designed to reduce developers workload and to bootstrap any kind of project.

Telosys offers a simple and pragmatic approach for code generation.

Telosys can be used to generate code for any type of language (Java, Python, PHP, JavaScript, C #, HTML, Scala, Go, etc.) with any type of framework (AngularJS, JPA, Spring MVC, etc). All templates are customizable, so you generate exactly what you want.

 

Pricing:
  • Open Source
Platforms:
  • Cross Platform
No comment yet.
Scooped by Mickael Ruau
Scoop.it!

PHP : Industrialisation et bonnes pratiques

PHP : Industrialisation et bonnes pratiques | Bonnes Pratiques Web & Cloud | Scoop.it
Contrôler sa dette technique, ses temps de développement ou plus simplement maintenir une qualité logicielle suffisante exige de respecter certains processus et bonne pratique
No comment yet.
Scooped by Mickael Ruau
Scoop.it!

Pomm, The Postgresql object model manager for PHP

Pomm, The Postgresql object model manager for PHP | Bonnes Pratiques Web & Cloud | Scoop.it
Pomm is an open source database access framework in PHP dedicated to the Postgresql™ database. It offers an alternative approach than ORM to using database in web applications developments.

Imagine an ORM but upside down. That’s what Pomm is.

When ORM appeared in the PHP world, they brought with them a lot of good practices in addition of sticking to a purely object oriented model which, at the time, was missing in most of PHP projects.

ORM are widely used today because they ease the development of large applications. But they also come with pitfalls that lead to badly designed data structures, complex processes and more generally, performances issues.

Pomm came with a pragmatic approach setting the database at developers fingertips without the arduousness of an abstraction layer. It grants developers with unlimited access to SQL and database features while proposing a high level API.

Pomm2 also gives an easy access to the powerful features of Postgresql via a CLI tool that help developers inspect database structures and generate mapping classes. Using a modular distribution is the best way to comply with everyone’s way of doing the things.
No comment yet.
Scooped by Mickael Ruau
Scoop.it!

AFSY - Association Francophone des Utilisateurs de Symfony - calendrier de l'avent 2017 - Jour 11 - Non à la Doctrine, découvrez Pomm et (re-)découvrez PostgreSQL

AFSY - Association Francophone des Utilisateurs de Symfony - calendrier de l'avent 2017 - Jour 11 - Non à la Doctrine, découvrez Pomm et (re-)découvrez PostgreSQL | Bonnes Pratiques Web & Cloud | Scoop.it
Pomm est une alternative aux ORM. Il se définit comme un gestionnaire de modèle objet. La principale ligne de conduite du projet est d'être la moins intrusive possible et la plus simple. Ainsi, vous l'oublierez rapidement pour vous concentrer sur PostgreSQL. Pomm vous permettra de reprendre le contrôle de votre SGBDR et de comprendre ce qu'il s'y passe afin de gagner en performance et bien plus.
Mickael Ruau's insight:

Sommaire :

No comment yet.
Scooped by Mickael Ruau
Scoop.it!

Pomm ou la redécouverte de SQL - Pomm ou la redécouverte de SQL

Pomm ou la redécouverte de SQL - Pomm ou la redécouverte de SQL | Bonnes Pratiques Web & Cloud | Scoop.it

La première fois que j’ai utilisé une base de donnée, il y a une quinzaine d’année j’ai été bluffé par la simplicité. Il faut dire que parser du fichier dans un format maison, c’était tout sauf efficace. SQL m’apportait la structure fiable et les normes qui me manquaient. La courbe d’apprentissage de MySQL aidant, après une demi journée j’avais des tables et des requêtes CRUD. Avec le recul, évidemment, c’était perfectible, une dizaine de lignes de code dupliquées pour chaque requêtes c’était peut être pas si magique que cela.

Le temps à passé, j’ai amélioré la technique, factorisé tout cela et c’était pas si mal !

Le mal est arrivé ensuite, sous la forme d’ORM, mais je ne l’ai pas compris tout de suite. Sur le coup c’était génial, plus besoin d’écrire ces requêtes fastidieuses, toujours les mêmes, l’ORM s’en charge à ma place ! Je peux me concentrer sur le reste, sur le métier, je vais être bien plus efficace !

La réalité m’a bien vite rattrapé. Je perdais du temps sur la modélisation qu’il fallait reprendre plusieurs fois pour rester dans la logique de l’ORM, je gagnais au final peu de temps sur les requêtes simples, et pas du tout sur les requêtes les plus complexes… Je devais réapprendre un langage, que je trouvais plus complexe et qui limitait les possibilités ou les performances de ma base de données.

Le salut est venu à la fois de Postgresql et de Pomm !

Je ne me suis pas mis à Pomm par hasard. Après avoir vu @chanmix51 en conf sur Postgresql ou Pomm, vous n’avez qu’une envie, c’est de tester ! C’est magique et envoûtant. Les possibilités semblent infinies, on découvre que le SQL c’est aussi des requêtes récursives ou la gestion du type JSON par exemple !
No comment yet.
Scooped by Mickael Ruau
Scoop.it!

Reprenez le contrôle de PostgreSQL grâce à POMM - Forum PHP 2018 - Afup - Association française des utilisateurs de PHP

Reprenez le contrôle de PostgreSQL grâce à POMM - Forum PHP 2018 - Afup - Association française des utilisateurs de PHP | Bonnes Pratiques Web & Cloud | Scoop.it
Aujourd'hui, lorsque l'on parle des bases de données, nous pensons tout de suite ORM. Le plus célèbre d'entre eux est sans doute Doctrine.
Mais à quoi sert l'ORM ?
Le but premier de celui-ci est l'abstraction de la base de données. En effet, nul besoin de connaissances en SQL pour persister ou récupérer des données.
Celui-ci permet également de changer facilement de SGBDR. Cependant, qui, dans la vie d'un projet, a besoin de ça sans refonte ?

Le constat est qu'aujourd'hui, si bon nombre de développeurs font du Symfony avant de faire du PHP, ils sont encore plus nombreux à faire du Doctrine avant de faire du SQL.
Ce qui était, avant, le point de départ d'un projet, est devenu complètement ignoré aujourd'hui.

Nous explorerons les concepts de POMM et son utilisation à travers une application PHP et nous reprendrons le contrôle de PostgreSQL afin d'exploiter la puissance de celui-ci.
No comment yet.
Scooped by Mickael Ruau
Scoop.it!

�� � � Le PHP moderne est beau et productif � �� �

�� � � Le PHP moderne est beau et productif � �� � | Bonnes Pratiques Web & Cloud | Scoop.it


Pour commencer, permettez-moi de vous raconter mon expérience de développement et l'expérience des outils dans d'autres langues, afin que vous compreniez à quoi je compare.



Python En ce qui concerne les projets en python (le plus souvent dans Django), nous obtenons une plate-forme qui vous permet de créer facilement et simplement des fonctionnalités, de créer des serveurs rest-api, d'effectuer un partage de système, etc. La logique du cadre est très claire et simple. Même un développeur complètement vert peut, en quelques heures, noter un petit blozik avec un panneau d'administration. De plus, la documentation Django est l'une des plus haute qualité que j'ai vu. À tout cela, du sucre de syntaxe python est ajouté, ce qui aide à implémenter certains modèles de manière assez élégante. Si nous passons de Django à Tornado / aiohtpp / Twisted / Flask, etc., alors la douleur commence, car le code en eux est beaucoup plus désagréable que dans Django.



Java Si nous parlons de Java, par exemple, Spring, alors ce sont des systèmes qui causent des douleurs anales car ils vous obligent à configurer tout ce qui peut être configuré. Le seuil d'entrée est très élevé, un grand nombre de nuances que vous devez garder à l'esprit, plus la syntaxe Java elle-même vous oblige à écrire des constructions très volumineuses (vrai pour tous les projets dans le sixième Java). Mais en récompense, nous obtenons des systèmes très fiables et flexibles auxquels plus d'une douzaine de programmeurs peuvent survivre avec des mains très médiocres.



Quant à PHP


Avant de commencer le travail, j'ai lu un livre: Matt Zandra - Objets PHP, modèles et techniques de programmation, et je me suis assuré que PHP, en général, sans aucune douleur particulière, vous permet d'implémenter certains modèles de développement. C'est-à-dire en PHP, vous pouvez écrire le code correct, qui ne diffère pas beaucoup de ce que nous obtenons en Python / Java.

No comment yet.
Scooped by Mickael Ruau
Scoop.it!

Pilotes Microsoft SQL Server pour PHP - PHP drivers for SQL Server | Microsoft Docs

Pilotes Microsoft SQL Server pour PHP - PHP drivers for SQL Server | Microsoft Docs | Bonnes Pratiques Web & Cloud | Scoop.it
Les pilotes Microsoft pour PHP pour SQL Server permettent l’intégration avec SQL Server pour les applications PHP. Les pilotes sont des extensions PHP qui permettent de lire et d’écrire des données SQL Server à partir de scripts PHP. Les pilotes fournissent des interfaces pour accéder aux données dans Azure SQL Database et dans toutes les éditions de SQL Server 2005 et versions ultérieures (dont Express Edition). Ils utilisent des fonctionnalités PHP, et notamment les flux PHP, pour lire et écrire des objets volumineux.
Mise en route

Étape 1 : Configurer un environnement de développement PHP
Étape 2 : Créer une base de données pour le développement PHP
Étape 3 : Preuve de concept sur la connexion à SQL avec PHP
Étape 4 : Connexion résiliente à SQL avec PHP

Documentation

Prise en main
Vue d'ensemble
Guide de programmation
Security Considerations
Mickael Ruau's insight:

Exemples

No comment yet.
Scooped by Mickael Ruau
Scoop.it!

PHP Fondation : une nouvelle vie pour PHP

PHP Foundation a pour mission de continuer à gouverner le monde PHP et de poursuivre le développement du langage. C’est une étape importante dans la vie de PHP et de son futur. C’est un ancien responsable de JetBrains qui va piloter la fondation : Nikita Popov.
No comment yet.
Scooped by Mickael Ruau
Scoop.it!

thecodingmachine/docker-images-php: A set of PHP Docker images

thecodingmachine/docker-images-php: A set of PHP Docker images | Bonnes Pratiques Web & Cloud | Scoop.it
A set of PHP Docker images. Contribute to thecodingmachine/docker-images-php development by creating an account on GitHub.
Mickael Ruau's insight:
General purpose PHP images for Docker

This repository contains a set of developer-friendly, general purpose PHP images for Docker.

  • You can enable or disable the extensions using environment variables.
  • You can also modify the php.ini settings using environment variables.
  • 2 types available: slim (no extensions preloaded) or fat (most common PHP extensions are built-in)
  • 3 variants available: CLI, apache and fpm
  • Fat images are bundled with Supercronic which is a Cron compatible task runner. Cron jobs can be configured using environment variables
  • Fat images come with Composer and Prestissimo installed
  • All variants can be installed with or without NodeJS (if you need to build your static assets).
  • Everything is done to limit file permission issues that often arise when using Docker. The image is actively tested on Linux, Windows and MacOS
No comment yet.
Scooped by Mickael Ruau
Scoop.it!

[obsolète] Du bon usage de PHP – CERT-FR

[obsolète] Du bon usage de PHP – CERT-FR | Bonnes Pratiques Web & Cloud | Scoop.it

 Conseil au développeurs

6.1 Faire de la programmation défensive

La programmation défensive n’est pas une notion propre à PHP. C’est un état d’esprit que doit acquérir le développeur qui souhaite avoir une application plus résitante aux attaques.

Le typage fort n’existe pas dans ce langage de programmation. Il est donc nécessaire de faire à la main certains contrôles de cohérence qui sont fait automatiquement dans d’autre langages.

6.1.1 Filtrer les entrées

De nombreuses attaques sur des sites qui utilisent PHP mettent en œuvre de l’injection de données (injection de sql, injection de commandes shell, cross site scripting, …). Ces attaques sont possibles parce que les entrées de données sur lesquelles le visiteur peut avoir une influence ne sont pas « nettoyées » avant d’être passées en paramètres à des fonctions du système.

Le développeur est invité à nettoyer ses variables afin de vérifier qu’elles ne contiennent que ce qu’elles sont sensées contenir. Par exemple un nombre ne doit contenir que des chiffres (et pas des morceaux d’URL ou de requêtes SQL). Un identifiant ne devrait pas contenir des caractères délimitant les chaînes de caractères comme « «  » ou « ».

6.1.2 Vérifier la cohérence des données

Le programmeur d’une application qui doit tourner dans un milieu hostile ne doit pas ternir pour acquis que la cohérence des données va se maintenir toute seule.

Le programmeur est invité à vérifier régulièrement la cohérence :

  • des types de données ;
  • des tailles de tableau ;
  • des conditions d’entrées ou de sorties d’une fonction ou d’un module.

6.1.3 N’utiliser que des flots de données explicites

Les variables globales sont nuisibles dans la mesure où elles introduisent des effets de bord. En particulier elles permettent souvent une communication entre différentes partie du code. Une communication par ce biais est difficile à maîtriser, il est recommandé d’éviter d’avoir recours à ce genre moyen.

Il existe une version modifiée de PHP (hardened php) qui supprime certaines variables globales. Il est prudent de développer comme si cette extension n’était pas installée et de recommander de l’installer.

6.2 Procédure d’installation

De nombreux utilisateurs d’applications PHP les installent dans un environement peu sûr. Alors que l’application est développée avec grand soin, l’environnement d’exécution peut être faible. Cela peut entâcher à tort la réputation de l’application.

La procédure d’installation d’une application PHP peut utilement vérifier la configuration (register_globals, …) et proposer des modifications de la configuration pour la rendre plus sûre.

Mickael Ruau's insight:

Conseils pour déployer et exploiter une application

Lors du déploiement d’une application PHP sur un serveur WEB, il y a quelques paramètres de configuration qui permettent d’éviter de nombreux problèmes.

5.1 La variable register_globals

La première chose à faire pour se prémunir des conséquences de la souplesse offerte par PHP pour que des variables soient créées automatiquement, éventuellement à l’insu du développeur, est de modifier la valeur de la variable register_globals. Cette variable peut prendre les valeurs on ou off. Pour garantir un minimum de séurité il faut impérativement que cette valeur prenne la valeur off.

Ce réglage se fait dans les fichiers php.ini. Il peut y avoir plusieurs fichiers de ce type (par exemple pour prendre en compte plusieurs versions de php). Ces fichiers doivent contenir la ligne suivante :

register_globals = Off

5.2 La variable safe_mode

Le langage PHP dispose d’un mode de fonctionnement dans lequel il est possible de configurer finement la sécurité en limitant les fonctions dangereuses. Il est conseillé de lire la documentation de ce mode (cf. [#!SafeMode!#]) et de configurer le système afin d’être le moins permissif possible.

En particulier, il est sain de veiller à :

  • restreindre les possibilités de lecture strictement aux répertoires nécessaires au bon fonctionnement de l’application afin d’éviter qu’une faille ne permette de lire des fichiers sensibles comme des fichiers de configurations du système, des données personnelles ou des journaux de connexions ;
  • à restreindre les fonctions utilisables. En particulier les fonctions de PHP qui permettent de lancer des commandes devraient être désactivées si l’application ne s’en sert pas.

5.3 Mettre en œuvre un pare-feu

Les attaques basées sur l’inclusion de fichiers PHP distants (dites « PHP include ») sont très fréquentes. Dans ce genre d’attaque l’intrus force le serveur WEB vulnérable à télécharger un fichier sur l’Internet. Ce fichier contient du code PHP, qui est exécuté automatiquement par l’interpréteur PHP de la machine vulnérable, conduisant ainsi à l’exécution de code arbitraire.

Le pare-feu devrait être configuré pour interdire les connexions sortantes depuis le serveur WEB qui accueille l’application PHP. Idéalement ce pare-feu ne doit pas être un pare-feu installé sur le serveur WEB mais un pare-feu en coupure. Plus d’information dans la note [#!FW!#].

5.4 Filtrer les requêtes

Certains outils (reverse proxy) permettent d’écarter certaines requêtes faites sur le site (par exemple parce qu’elles demandes des chemins qui n’existent pas). De tels outils, bien qu’imparfaits, réduisent l’exposition d’un site fragile aux agressions de l’Internet.

5.5 Journaliser

PHP peut être configuré pour journaliser toutes les erreurs d’exécution. S’il n’est pas possible d’empêcher les attaques, il peut être intéressant d’augmenter le niveau de bruits qu’elles produisent pour les découvrir au plus tôt. Pour cela tous les programmes devraient commencer par la ligne :

<?php error_reporting(E_ALL);>

Bien entendu, la journalisation en elle-même ne résoud aucun problème. Elle permet si les journaux sont dépouillés de découvrir les problèmes ce qui est déjà beaucoup. Il est donc important d’affecter des ressources au dépouillement de ces journaux.

5.6 Attention à l’hébergement mutualisé

Si vous optez pour un hébergement mutualisé ou tout autre forme de sous-traitance, il faut préciser contractuellement les exigences de ce chapitre, avec au besoin des pénalités.

Certains hébergeurs offrent une grande souplesse au détriment de la sécurité (en particulier sur les points ci-dessus). Il peut s’agir d’un critère de choix des hébergeurs : être à même d’offrir ces paramètres de sécurité.

No comment yet.
Scooped by Mickael Ruau
Scoop.it!

Linux 25 PHP Security Best Practices For Sys Admins

Linux 25 PHP Security Best Practices For Sys Admins | Bonnes Pratiques Web & Cloud | Scoop.it
HP is an open-source server-side scripting language, and it is a widely used. The Apache/Nginx/Lighttpd web server provides access to files and content via the HTTP OR HTTPS protocol. A misconfigured server-side scripting language can create all sorts of problems. So, PHP should be used with caution. Here are twenty-five php security best practices for Linux and Unix sysadmins for configuring PHP securely.
No comment yet.
Scooped by Mickael Ruau
Scoop.it!

Facebook - Facebook Tech Stack

Facebook - Facebook Tech Stack | Bonnes Pratiques Web & Cloud | Scoop.it
React, PHP, Jenkins, GraphQL, and Confluence are some of the popular tools that Facebook uses. Learn more about the Language, Utilities, DevOps, and Business Tools in Facebook's Tech Stack.
No comment yet.