Archives du site

PHP : PDO Requêtes préparées

Transactions avec la base de données

De nos jours, énormément de sites dynamiques utilisent une base de données SQL. Tout le monde sait que l’accès à une base de données prend un temps non négligeable dans le traitement d’un site web. De plus, pour ceux qui se sont déjà intéressé à la sécurité, vous avez sûrement remarqué la quantité énorme de failles qu’il peut exister entre un script et sa base de données.
Nous allons voir dans cet article comment gagner en performance et en sécurité grâce aux requêtes préparées.

Jouez le jeton de la sécurité

Tas de jetons

Aujourd’hui je vais vous parler de sécurité. En particulier de la protection contre les failles CSRF (ou XSRF), car ce type de faille est très peu connu et laisse énormément de possibilités à l’attaquant.

Le principe de l’attaque par CSRF est très simple : « Je ne peux pas faire une action, alors je m’arrange pour que l’administrateur la fasse à ma place (sans qu’il soit au courant bien entendu) ».

Formulaire de contact avec PHPMailer

Formulaire de contactLe formulaire de contact est le premier et le plus simple moyen de communication entre un client et le propriétaire du site. Que ce soit sur un blog pour demander un article à l’administrateur ou sur un site professionnel pour demander un devis, le formulaire de contact se doit d’être simple à remplir et surtout sécurisé pour pouvoir faire le tri entre clients et spams.

Dans cet article nous mettrons en place un formulaire très simple : nom, prénom, @mail, sujet, message. Nous y mettrons un peu d’AJAX pour le rendre plus réactif. La vérification des champs sera très simple : syntaxe mail pour le champ @mail et vérification des caractères [a-z._-] pour les autres champs. Ce qui nous assurera un formulaire sécurisé au niveau des injections de la fonction mail().

Utilisation d’un système de cache

Le système de cache permet de stocker des données de façon à les rendre accessibles très rapidement. En général, ces données sont souvent utilisées en lecture et rarement en écriture.

Dans cet article nous allons mettre en place un système de cache pour une liste d’utilisateurs. Ce système chargera cette liste depuis la base de données toutes les heures afin de s’assurer que le cache est bien à jour et lira le fichier de cache le reste du temps.
Cette fonctionnalité nous permet limiter les accès à la base de données, et surtout accélérer la vitesse de chargement de la liste.[…]

preg_match VS preg_replace

Après lecture d’un titre comme celui là il est normal de se demander ce qu’on peut comparer entre preg_match et preg_replace. En effet, ces deux fonctions PHP n’ont pas le même but : preg_match test si une chaîne de caractères réponds à un modèle (ou pattern) alors que preg_replace remplace le modèle trouvé par une autre valeur.

La question que je me suis posé est la suivante : Est-il plus interressant d’utiliser preg_match ou preg_replace pour convertir une date MySQL en format Français ? (2009-12-13 01:45:00 => 13/12/1988 01:45:00)
[…]

Configuration des erreurs

Pour tout site en développement il est interressant de voir rapidement les erreurs rencontrées par PHP ou toutes les librairies que vous utilisez. Voir les erreurs « en live » sur le site permet de rapidement les analyser et donc de les conriger.

Un problème apparait lorsqu’un site est mis en ligne (et donc à la merci des pirates). L’affichage d’une erreur donne énormément d’informations quant à une faille probable. Ces erreurs peuvent indiquer l’utilisation d’une librairie spéciale et spécialement sa version. Et connaître la version d’une librairie permet surtout de définir l’ensemble des bugs ou failles qui ont été corrigés dans des versions postérieures.

Un exemple qu’on croise assez souvent c’est les erreurs de requête SQL joliment offert aux pirates :

Unknown column 'iid' in 'where clause'
SELECT id,login FROM user WHERE iid=1

Notons que cette erreur nous donne la table utilisée pour séléctionner un utilisateur. On peut aussi voir apparaitre la structure (une partie au moins) de cette table.

Pour limiter la vitesse d’action des attaquants, il est important de leurs fournir le moins d’informations possible. Et donc de ne pas afficher les erreurs directement sur le site.
[…]

Configuration générale de PHP

Lorsque vous installez un nouveau serveur avec Apache et PHP, vous n’avez pas forcément les fichiers de configuration configuré comme il le faudrait. Cette article n’a pas pour prétention de vous donner la solution à tout, mais séléctionnez dans les configurations ci-dessous celles qui vous semblent importantes.

Vous trouverez ci-dessous une liste des fonctionnalités et la valeur conseillée concernant la configuration générale de PHP.
[…]