Secure Gidbook est une application Web, écrite en PHP. La persistance des données est implémentée avec MySQL.
Cette démo a été écrite pour démontrer mon approche dans la situation "Vous n'avez rien d'autre que PHP et MySQL. Vous devez écrire une application sécurisée. Montrez ce que vous pouvez."
Cela pourrait également être un défi pour vous: déployer cette application, la torturer, le pirater, prouver qu'il y a des défauts au niveau de l'application. Je suis sûr à 95% qu'il n'y en a pas. Montrez-moi que je me trompe.
Cette application ne consiste pas à réinventer la roue. Oui, il existe de nombreux bons cadres et LIB OpenSource.
Il s'agit davantage du défi de comprendre la nature intérieure des cadres que nous utilisons chaque jour, et comment il affecte la sécurité, l'extension et la maintenabilité des applications que nous créons.
La tâche consiste à rédiger une application de démonstration en php pur sans libs tiers.
L'application est un livre d'or avec les optations suivantes: inscription, connexion et déconnexion, messages, modifier, supprimer, ajouter la réponse.
La tâche consiste à rédiger une application de démonstration en php pur sans libs tiers pour démontrer que la bonne conception est le meilleur moyen de créer des applications sécurisées.
Malgré la tempation évidente d'écrire une application simple d'une manière trop simplifiée, il y a un défaut encore plus évident de cette approche: vous lâchez un contrôle sur l'application et vous noyez dans les limites de cette simplicité locale.
Alors oui, il vaut la peine d'écrire un framework MVC simple mais fonctionnel, que d'écrire 10 scripts PHP non étendables, mélangés avec HTML.
Un environnement de type MVC à passe-partout a été écrit à partir de zéro pour cette démo. Interface dans un HTML ultra-simple non syntylé pur.
Tout le traitement est effectué autour d'un cycle de vie d'un objet de demande qui est muté pendant la séquence suivante:
Comme le défi concernait principalement la rédaction d'une application, aussi sécurisée que possible, la liste suivante de mesauures a été prise pour faire respecter l'application:
Pour limiter le nombre de tentatives de cambriolage, le Fail2ban simplifié local est construit.
Les principales caractéristiques sont:
Les seuils d'interdiction pour les erreurs et les demandes sont configurables.
Test de tests très basique prévu pour les sous-systèmes d'épine dorsale.
Prérequis: PHP 7 (PDO_MYSQL, OpenSSL), compositeur (pour Phpunit uniquement), serveur HTTP
WEBAPP_BASEDIR - should point to src/ folder
WEBAPP_STORAGE_MYSQL_HOST
WEBAPP_STORAGE_MYSQL_USER
WEBAPP_STORAGE_MYSQL_PASSWORD
WEBAPP_STORAGE_MYSQL_DB
src/public avec le document par défaut index.php phpunit --bootstrap tests/bootstrap.php tests/ApplicationTest.php
getErrorsTillBan et getRequestsTillBan si nécessaire