Astuces, conseils et veille sur l’écosystème du développement

Par un développeur en France

Générer un mot de passe sécurisé en PHP (Version 2025)

La génération de mots de passe robustes est un élément fondamental de la sécurité des applications. Un mot de passe fort doit être long et contenir une combinaison de différents types de caractères. Une approche dépassée, souvent vue dans d’anciens tutoriels, utilisait des fonctions comme rand() et srand(). Celles-ci ne sont pas considérées comme suffisamment sécurisées pour des tâches cryptographiques. Voici une solution moderne et sûre pour générer des mots de passe en PHP. ...

juillet 8, 2025 · 4 min · 701 mots · oxomichael

Microsoft Edge workaround with Virtualbox (vagrant) and local domain

Due to network isolation in Windows 10 (is it a bug ?). Edge can’t access domain in VirtualBox network, so we use regedit.exe Looks for key registry name as *NdisDeviceType of your virtual network card (from VirtualBox), and change the value to “0” (value is set to one by default), and reboot. To find the key, see something like that in the registry Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\00XX. The change will make your network card in active networks, as a “Public” or “Unidentified” network. ...

octobre 6, 2018 · 1 min · 80 mots · oxomichael

Configurer Nextcloud derrière un reverse proxy Nginx

Comment configurer Nextcloud derrière un reverse proxy et ajouter correctement les en-têtes de sécurité. Nextcloud avec Apache Notre instance Nextcloud sera installée avec Apache/PHP-FPM. Dans la configuration de votre vhost ou dans votre .htaccess, commentez les lignes comme ci-dessous : <IfModule mod_env.c> # Add security and privacy related headers # Header set X-Content-Type-Options "nosniff" # Header set X-XSS-Protection "1; mode=block" # Header set X-Robots-Tag "none" # Header set X-Download-Options "noopen" # Header set X-Permitted-Cross-Domain-Policies "none" SetEnv modHeadersAvailable true </IfModule> Configuration de Nginx Configurez un reverse proxy standard. ...

mars 18, 2018 · 1 min · 159 mots · oxomichael

Vagrant multi-machine

The purpose is to have several VM to reproduct production environment, simulate network failure. We start simply with a web machine and an external database (and specific disk size for that) Install vagrant plugins vagrant plugin install vagrant-vbguest vagrant plugin install vagrant-disksize Create your multi machine environment cd {yourdir}/workspace/envdev/ mkdir my-multi-machine cd my-multi-machine vagrant init ... Edit your Vagrantfile Vagrant.configure("2") do |config| # WEB config.vm.define "web", primary: true do |web| web.vm.box = "debian/stretch64" web.vm.box_check_update = false web.vm.network "private_network", ip: "192.168.33.101" web.vm.synced_folder ".", "/vagrant", owner: "vagrant", group: "vagrant", type: "virtualbox" web.vm.synced_folder "../../", "/home/vhosts", owner: "vagrant", group: "vagrant", type: "virtualbox" web.vm.provider "virtualbox" do |vb| vb.customize ["modifyvm", :id, "--name", "web"] vb.customize ["modifyvm", :id, "--memory", "512"] vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"] vb.customize ["modifyvm", :id, "--natdnsproxy1", "on"] end end # DB config.vm.define "db" do |db| db.vm.box = "debian/stretch64" db.disksize.size = "30GB" db.vm.box_check_update = false db.vm.network "private_network", ip: "192.168.33.102" db.vm.synced_folder ".", "/vagrant", owner: "vagrant", group: "vagrant", type: "virtualbox" db.vm.provider "virtualbox" do |vb| vb.customize ["modifyvm", :id, "--name", "db"] vb.customize ["modifyvm", :id, "--memory", "512"] vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"] vb.customize ["modifyvm", :id, "--natdnsproxy1", "on"] end end end “web” machine is the primary. When you vagrant ssh, you enter in it automatically. So to go in db, enter vagrant ssh db ...

décembre 11, 2017 · 2 min · 240 mots · oxomichael

Symfony Console

In every project we always need some task to be executed in console, so you have a web app in php, continue in php and use symfony/console Installation $ composer require symfony/console ## Creating a New Command To create a new command, we need to make sure our file will be executable. In order to do that, let’s create a console file in the root of our project. This file will be our command manager. ...

décembre 10, 2017 · 6 min · 1273 mots · oxomichael

Utiliser inotify

Description inotify permet d’ajouter un “watch descriptor” sur un fichier et d’envoyer des notifications au système lorsqu’un événement affecte ce fichier. Pour rappel, dans le monde UNIX, un fichier peut représenter un simple fichier, mais aussi un répertoire, un périphérique, un lien, etc. Les principaux événements qui peuvent être suivis sont : IN_ACCESS : le fichier est lu ; IN_MODIFY : le fichier est modifié ; IN_ATTRIB : les attributs du fichier sont modifiés ; IN_OPEN : le fichier est ouvert ; IN_CLOSE_WRITE : le fichier est fermé après avoir été ouvert en écriture ; IN_CLOSE_NOWRITE : le fichier est fermé après avoir été ouvert en lecture ; IN_MOVED_FROM / IN_MOVED_TO : le fichier a été déplacé ou renommé ; IN_DELETE_SELF : le fichier a été supprimé ; IN_DELETE : un fichier a été supprimé dans le répertoire surveillé ; IN_CREATE : un fichier a été créé dans le répertoire surveillé. Incron Pour installer incron : ...

décembre 5, 2017 · 3 min · 505 mots · oxomichael

My Dev Docker Compose File

Use docker to compose your dev environment Working with Apache, PHP, MariaDB, … Here is my sample compose file version: '2.1' services: # PHP 7.0 FPM dev-fpm70: container_name: dev-fpm70 image: oxo/php-fpm:7.0-debian volumes: - /home/michael/workspace:/home/vhosts links: - "dev-db:db" - "dev-mailcatcher:mailcatcher" logging: driver: "json-file" options: max-size: "1g" max-file: "10" environment: LOCAL_USER_ID: 1000 # MailCatcher dev-mailcatcher: container_name: dev-mailcatcher image: oxo/mailcatcher:0.6.5 logging: driver: "json-file" options: max-size: "1g" max-file: "10" # MariaDB dev-db: container_name: dev-db image: oxo/mariadb:10.2-debian user: mysql volumes: - /home/michael/workspace/database:/var/lib/mysql logging: driver: "json-file" options: max-size: "500m" max-file: "9" environment: MARIADB_PASS: password # Apache HTTPd dev-httpd: container_name: dev-httpd image: oxo/httpd:2.4-debian volumes: - /home/michael/workspace:/home/vhosts links: - "dev-fpm70:fpm70" logging: driver: "json-file" options: max-size: "1g" max-file: "10" networks: default: front: ipv4_address: 172.10.0.2 networks: front: driver: bridge ipam: driver: default config: - subnet: 172.10.0.0/16 gateway: 172.10.0.1 How to use it TODO ...

novembre 23, 2017 · 1 min · 211 mots · oxomichael

Convertir un clavier QWERTY (ANSI) en version AZERTY (ISO)

Acheter les autocollants puis les coller. Mais il vous manque les signes supérieur (>) et inférieur (<) Windows Installer AutoHotKey (https://www.autohotkey.com) Lire la documentation (je vous met tous ça là, quand même) Right-Click on your desktop. Find “New” in the menu. Click “AutoHotkey Script” inside the “New” menu. Give the script a new name. Note: It must end with a .ahk extension. Ex. MyScript.ahk Find the newly created file on your desktop and Right-Click it. Click “Edit Script”. A window should have popped up, probably Notepad. If so, SUCCESS! Créer un fichier par exemple keymiss.ahk Saisir le contenu suivant ...

novembre 19, 2017 · 2 min · 419 mots · oxomichael

Déployer des applications PHP avec Ansistrano

Déployer des applications PHP avec Ansistrano Installer Ansible $ sudo apt-get install software-properties-common $ sudo apt-add-repository ppa:ansible/ansible $ sudo apt-get update $ sudo apt-get install ansible Dans /etc/ansible/ansible.cfg [defaults] host_key_checking = false Installer Ansistrano $ ansible-galaxy install carlosbuenosvinos.ansistrano-deploy carlosbuenosvinos.ansistrano-rollback Mise à jour Si vous voulez mettre à jour le rôle, vous devez passer le paramètre –force lors de l’installation. Veuillez vérifier la commande suivante : $ ansible-galaxy install –force carlosbuenosvinos.ansistrano-deploy carlosbuenosvinos.ansistrano-rollback ...

juillet 16, 2017 · 3 min · 548 mots · oxomichael

Créer une box Vagrant à partir de zéro

Box Debian Stretch 64 Installer VirtualBox Installer Vagrant Télécharger le CD d’installation réseau Debian Créer la machine virtuelle Machine Virtuelle Matériel Nom : vagrant-stretch64 Type : Linux Version : vagrant-stretch64 Taille mémoire : 512Mo Nouveau disque virtuel : Type : VMDK Taille : 8Go Désactiver l’audio Désactiver l’USB Monter l’ISO du CD Installation Choisir l’installation graphique Sélectionner une langue Sélectionner votre emplacement Configurer les locales Configurer le clavier Configurer le réseau Nom d’hôte : stretch64 Configurer les utilisateurs et mots de passe Entrer “vagrant” comme mot de passe root Entrer “vagrant” comme nom complet Nouvel utilisateur “vagrant” et aussi “vagrant” comme mot de passe Configurer l’horloge Partitionner les disques Guidé - utiliser le disque entier Laisser SCSIl (0, 0, 0) (sda) - 8.6 GB ATA VBOX HARDDISK présélectionné et continuer. Tous les fichiers dans une seule partition Terminer le partitionnement et écrire les changements sur le disque. Installer le système de base Configurer le gestionnaire de paquets Sélection des logiciels Veuillez désactiver toutes les options, sauf utilitaires usuels du système. Terminer l’installation Configuration Installer sudo $ su ...

juin 30, 2017 · 2 min · 361 mots · oxomichael