Site web : les bases de la sécurité

suivant »»


La sécurité d'un site web pour les débutants

www.kitgratos.net/affiliation/images/cadenas.gif Vous êtes de plus en plus nombreux à vouloir créer votre propre site web. Certains d'entre-vous par manque de volonté iront directement chercher un "script" tout fait (forum, sondage, CMS...) et d'autres, pires, iront créer un nouveau blog sur un site de rencontre (si c'est pas malheureux)... Un peu de courage ! Créer un site entièrement demande du temps et de l'énergie mais comme le dit Google : "Seul le résultat compte". Quoi de mieux que d'avoir un site unique, personnalisé et réagissant exactement comme on le veut. Avant de pouvoir administrer sereinement son site web, il faut passer par différentes étapes :
La première, la création du site bien sûr. Lorsque l'on débute, on a souvent tendance à "coder" comme un gros Sus domesticus et à négliger considérablement le coté sécurité. Si vous souhaitez développer un site web statique, alors rien ne vous retient ici sauf peut-être votre curiosité. Etudions maintenant le cas d'un site dynamique recueillant donc les données des visiteurs.

Régle numéro 1 : Ne jamais faire confiance à l'utilisateur.
Régle numéro 2 : Seule la régle numéro 1 compte.

Revenons quelques instants sur nos blogs et autres "scripts emballés prêts à servir". Je n'ai absolument rien contre les blogs et les forums comme phpBB mais sachez seulement que la plupart de ces scripts sont open source et donc n'importe qui peut y aller fouiner. Une faille et ce sont des milliers de forums défacés en quelques minutes. Et oui aujourd'hui, les hackers sont des robots. Les scripts kiddies ont été mis au ban de la société. Vous me direz, la force de l'open source c'est justement de pouvoir corriger une faille dés sa découverte. Je vous répondrai : "tout à fait" mais passons maintenant à ce qui vous intéresse le plus :


Les erreurs à éviter

ew-portal.info/images/img_phpinup.gif Comme je l'ai dis plus haut: ne jamais faire confiance à l'utilisateur car celui-ci, essaiera toujours d'entrer du code javascript quand vous lui demanderez son mot de passe ;). Voici les principales règles de sécurité :
Ne pas utiliser de javscript pour vérifier le type des données.
Pour les scripts PHP, utiliser des fonctions telles que :


<?php 

htmlspecialchars
($input); // convertit les caractères spéciaux en entitées html

// ou

htmlentities($input);

// Si vous insérer du contenu dans un base de données, n'oubliez pas :

addslashes($input); // généralement les hébergeurs l'activent automatiquement

// ceci afin d'éviter les injections SQL. 

?>





Pour créer un espace membre, préférez les sessions PHP couplées au cookies, afin d'éviter de surcharger le serveur inutilement en déclarant un session_start() à chaque requête. Concernant la sécurité de l'utilisation des sessions, le site officiel de PHP est trés clair:

“ Utiliser les sessions ne signifie pas que les données de session ne pourront être vues que par un seul utilisateur. Il est important de garder cela en tête lorsque vous stockez et affichez des données importantes. (..)
Par exemple, si quelqu'un usurpe une session, il peut alors poster un message dans un forum sous une fausse identité. Quelle est la gravité de ce problème ? Ou bien, il peut accéder aux commandes d'un client, et même, modifier son panier d'achat. À priori, c'est moins problématique pour un fleuriste que pour un pharmacien. Si vous voulez résoudre ce souci de façon simple, il peut être utile d'activer session.use_only_cookies. Dans ce cas, les cookies devront être activés par le client, sinon, les sessions ne fonctionneront pas.
Par conséquent, lorsque vous manipulez des données importantes, il faut exploiter d'autres méthodes pour décider si une session est valide ou pas. Les sessions ne fournissent pas une méthode fiable d'identification. ”




En respectant, chaque étape, vous devriez ne jamais avoir un de ces "defaced by" sur votre page d'accueil.


Cette article a été publiée le 17 juillet 2006.