Archives du site

Sécurité : Protection faille XSS

Dans un ancien article je vous conseillais d’utiliser des jetons pour vous protéger de la faille CSRF. Cette faille permettait à l’attaquant de d’utiliser vos droits d’administrateur pour faire n’importe quelle action sur votre site. Nous avons bouché la faille.
Cependant le cerveau humain, et plus particulièrement celui des pirates, est très mesquin et ne manque pas d’imagination pour remplir des formulaires en essayant des valeurs exotiques. Par exemple il pourrait tenter d’injecter du code Javascript ou HTML en utilisant la faille XSS.

Initialement appelée CSS (Crossing Site Scripting) cette faille s’appelle finalement XSS pour ne pas la confondre avec les feuilles de style.

Attention, je vous entends déjà dire que, vu que ce langage s’exécute du côté client d’une application, tout code Javascript ne représente pas réellement une faille de sécurité. Détrompez-vous, les injections Javascript sont à la base du vol de session. Oui, le Javascript permet de lire les cookies du visiteurs et donne donc la possibilité de les envoyer à un autre serveur (celui d’un pirate par exemple).

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.

Sécurité : [Correction]Protégez vous contre le vol de sessions

Suite à l’utilisation plus poussée de ma classe de protection contre le vol de sessions, je me suis aperçu d’un défaut concernant une des vérification. En effet, la vérification sur la variable $_SERVER[‘HTTP_ACCEPT’] ne peut pas être effectuée lors de

Sécurité : basename

En ce qui concerne la sécurité lors de l’utilisation du système de fichiers, la fonction basename de PHP fait vite parler d’elle. Elle permet d’extraire uniquement le nom du fichier dans une chaîne de caractères.

Par exemple, utilisons le code ci-dessous qui permet de télécharger un fichier passé grâce à la méthode GET :

<?php
	$path = '/mes_fichiers/';
	$file = $_GET['file'];
	readfile($path.$file);
?>

Ce code, très simple, affiche le contenu d’un fichier. Mais voilà … il a une énorme faille.

Astuce : Forcer le téléchargement d’un fichier

Dans cet article je fais vous parler d’un problème auquel vous avez sûrement fait face si vous avez déjà fait un site qui propose le téléchargement de fichiers. Problème En effet, vous l’avez deviné, le problème se pose lorsque vous

Sécurité : Protégez vous contre le vol de sessions

Lorsque la faille concernant le vole de session n’est pas bouchée, il possible qu’un pirate vol votre session d’administrateur puis détruise complètement votre site. Et pourtant il est assez facile de protéger votre site contre cette faille. C’est ce que

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) ».

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.
[…]