Trieur Organisé de Solutions et de Ressources Informatiques

logo du site TOSRI

Mot-clé - sécurité

Fil des billets - Fil des commentaires

3 juin 2011

Niveau : personne ayant des bases en informatique (terminologie, principe)

Sécuriser ses variables avec PHP

Readme

Cet article vous donne un moyen sûr de vous prémunir des injections SQL en PHP.

En informatique la sécurité est plus qu'un droit : c'est un devoir ; il est de la responsabilité du détenteur du site de mettre tout en oeuvre pour protéger les données de son site, dans le cas contraire il peut s'exposer à des poursuites pénales.

Les données envoyées par le client au serveur doivent être traitrées avec beaucoup de prudence car elles ne correspondent pas toujours à ce que vous voulez. Si aucun mécanisme de protection n'est mis en place une simple chaîne de caractères peut permettre de lire des données ou de les modifier.

Vous devez absoluement posséder une base de données active et un serveur PHP.

Fonction php avec MySQL

La fonction mysql_real_escape_string() requiert une connexion à une base de données MySQL pour récupérer le jeu de caractères autorisés.
<?php
    /**
     * Sécurisation des valeurs passées contre les injections SQL/JS et encodage des caractères spéciaux
     * /!\ Nécessite une connexion à la base pour récupérer le jeu de caractères
     * Entrée : la valeur à sécuriser et l'identifiant de connexion
     * Sortie : la valeur sécurisée ou false en cas d'échec de connexion ou de transformation
     */
    function safe($value, $connex){
        if ( !$connex )
            return false;
           
        if( is_string($value) )
            $value = mysql_real_escape_string(htmlspecialchars($value));
       
        if( is_array($value) )
            array_walk($value, create_function('&$n', '$n = mysql_real_escape_string(htmlspecialchars($n));') );

        return $value;
    }

Vous n'utilisez pas MySQL ?

La fonction mysql_real_escape_string() employée dans ce script est spécifique à MySQL. Voici les équivalences pour les gestionnaires de base de données les plus courants :
Gest. BDFonction à utiliser
MySQL mysql_real_escape_string()
Oracle Ne possède pas de fonction d'échapement : utilisez addslashes()
PostgreSQL pg_escape_string()
SQLite sqlite_escape_string()

Exemple d'utilisation

Lorsque vous devez utiliser des données issues d'un formulaire, vous pouvez appliquer la fonction safe() sur la variable $_POST (ou $_GET). Voici deux possibilités :
  • passer la variable en référence pour qu'elle soit modifiée : safe(&$_POST, $connex);
  • ou récupérer la contenu dans une nouvelle variable : $resultat = safe($_POST, $connex);

Remarques

  • Emploi : les données stockées dans les cookies peuvent êtres modifiés côté client, il peut être utile de contrôler leur contenu ; à contrario il est inutile d'utiliser safe() sur des variables affectées au niveau du serveur ;
  • Test : ce script a été testé mais il vous incombe de faire vos propres tests de vérification afin de vous assurer qu'il correspond bien à votre but ;
  • Évitez les redondances : si vous avez fait une vérification de la validité de l'identifiant de connexion avant de le passer en paramêtre alors vous pouvez supprimer les 3 premières lignes de safe().

26 février 2011

Niveau : personne ne possédant pas de compétences de bases en informatique

Mots de passe, comment s'en souvenir ?

Niveau : Facile
Temps : 5 min (lecture)

Aussi bien sur le web que pour des applications, lorsque l'on utilise régulièrement son ordinateur on est confronté à un problème de taille : comment se souvenir de ses mots de passe ? Cet article vient en complément de Comment bien choisir sont mot de passe et permet d'améliorer le rapport entre fiabilité et facilité de mémorisation. Un mot de passe simple (prénom, ville...) se retient facilement mais n'offre pas une sécurité suffisante, à contrario, un mot de passe fiable (67aCVd8eo1...) est difficile à mémoriser.

Quelques techniques sont à éviter :

  • Je n'ai qu'un ou deux mots de passe compliqués que j'ai mémorisé et je les emploient à chaque fois qu'on m'en demande un. Si on arrive à trouver votre mot de passe alors celui-ci donneras accès à tous vos comptes.
  • Je note l'ensemble de mes mots de passe sur un carnet à coté de mon ordinateur. Très efficace contre les pirates à distance mais inutile contre les personnes ayant accès à la pièce.
  • Mes mots de passe sont simples mais tous différents. Grâce à des listes de mots de passe type ils deviennent facile à trouver.

Il existe de nombreuses solutions pour stocker ses différents mots de passe sur un ordinateur. On peut citer le gestionnaire du navigateur Firefox qui mémorise les mots de passe sur le Web et qui est efficace, mais les mots de passe ne sont pas exclusivement présents sur internet.

Une technique pour les retenir tous :

Il s'agit de mémoriser une seule technique de création de mot de passe (que l'on peut qualifier d'algorithme). L'algorithme est comme une recette de cuisine où le gâteau représente le mot de passe, il faut suivre la recette pour le créer ; voici un exemple avec le site Facebook :

  • prendre la dernière lettre du nom de l'application / du site et la mettre en majuscule : K
  • ajouter le nombre de lettres du nom de l'application / du site : 8
  • ajouter ses voyelles : aeoo
  • ajouter un caractère spécial : ?
  • ajouter les consonnes de son prénom (ici Adrien) : drn
  • terminer par l'initiale de votre nom en majuscule : C

Le mot de passe obtenu pour le compte est : K8aeoo?drnC

On applique maintenant la même technique pour la messagerie yahoo : O5aoo?drnC

Chacun doit trouver sa propre recette, elle sera plus facile à retenir ainsi. Voici un site qui permet de tester le niveau de fiabilité de celui-ci : passwordmeter.com. On peut constater que la méthode employée en exemple est perfectible : sur ce site, le password obtient un score de 82%.

Les personnes septiques diront "C'est une technique qui présente un faille importante ! Si on trouve la méthode utilisée on peut retrouver tous les mots de passe !!". Certes mais l'algorithme étant caché dans le mot de passe, celui-ci doit être décodé en testant toutes les possibilités une à une ce qui, pour un mot de passe de plus de 10 caractères spéciaux / chiffres / lettres, requiert trop de temps.

Pour terminer ce billet : un mot de passe c'est comme un secret, la meilleure forteresse est dans son propre cerveau.


30 septembre 2010

Niveau : personne ne possédant pas de compétences de bases en informatique

Mieux protéger ses mots de passe sous Mozilla Firefox

Temps : 10 min
Difficulté : Facile
Logiciel : Firefox (3.6.10 utilisée pour le tutoriel)

Aujourd'hui, une petite astuce très facile à mettre en place et qui vous permettra de bien sécuriser vos différents mots de passe que vous utilisez sur le net.

Petite intro rapide

Est-ce que vous laissez votre ordinateur allumé ? Est-ce que plusieurs personnes utilisent votre ordinateur et votre session ? Vous prêtez votre portable ?
Vous voulez peut-être être la seule personne à utiliser vos mots de passe et à les connaître. Explications...

Les mots de passe enregistrés

Je ne sais pas si vous le savez mais Firefox (comme beaucoup de navigateurs) peut stocker les identifiants et mots de passe afin de vous épargner des "zut, c'est lequel celui-là" ou encore "il me demande encore le mot de passe !".
Sous Firefox (les versions récentes), les mots de passe sont stockés de manière cryptée dans une base de données SQLite. Cependant, les mots de passe enregistrés sont tous visibles via Firefox :
Pour cela dans la barre de menu, cliquez "Outils", "Options", une fenêtre s'ouvre et choisissez l'onglet "Sécurité".

ff-onglet-sécurité
Ensuite dans le champs "Mots de passe", cliquez sur le bouton "Mots de passe enregistrés", une nouvelle fenêtre s'ouvre encore.
Vous trouverez ici le nom des site et les identifiants associés sous forme de tableau. Pour afficher les mots de passe, cliquez sur le bouton d'en bas "Afficher les mots de passe" et confirmez. Les mots de passe sont devenus apparents.

ff-mdps

Un mot de passe pour les cacher tous !

Vous venez de voir comment récupérer vos mots de passe si vous les aviez oublié, mais surtout comment quelqu'un peut voir vos mots de passe très facilement !
La solution est donc de mettre un mot de passe principal (à ne surtout pas oublier celui-là !). Ce dernier sera demandé à chaque fois qu'un autre mot de passe sera utilisé ou affiché (comme dans le tableau précédent). Voilà donc la manipulation, assez simple :
Revenons sur notre onglet "Sécurité" (Outils->Options-> onglet Sécurité) et dans le champs "Mots de passe" cochez la case "Utiliser un mot de passe principal". Une fenêtre s'ouvrira pour que vous y entriez votre mot de passe. Choisissez-le à votre convenance !
ff-ajout-de-mot-passe-principal


- page 1 de 2