EcommerceDEV. Développement, optimisation et sécurisation des sites de commerce électronique.
arrowAccueil arrow Programmation arrow ASP/.Net/PHP arrow Créer des mots de passe via ASP pour limiter les risques de piratage
Vendredi 25 juil 2008
Nom d'utilisateur     Mot de passe      Conserver       Mot de passe perdu ?  Inscription
Menu
Accueil
A propos du site
Carte du site
Moteur de recherche
Nouvelles
Contactez-nous
Evénements
Lettres de nouvelles
- - - - - - -
Analyse
Conception
Optimisation
Programmation
Sécurité
Produits/Services
avr 11 2006
Créer des mots de passe via ASP pour limiter les risques de piratage Version imprimable Suggérer par mail
Appréciation des utilisateurs: / 2
FaibleMeilleur 
Programmation - ASP/.Net/PHP
Ecrit par Dimitri ACHIKHMIN   
11-04-2006
Créer des mots de passe via ASP pour limiter les risques de piratage

"Vous mettez en œuvre un service avec un accès par identification : partie privée de votre site, forums, abonnement aux articles ..... Vous identifiez vos utilisateurs par un login et un mot de passe. Si le problème de login ne se pose pas, ça sera l'e-mail de l'utilisateur ou un nom libre, le mot de passe doit répondre à un certain nombre de critères afin de limiter les risques de piratage.

Créer des mots de passe pour votre application

Souvenez-vous de vos premiers mots passe : "musique", "jaguar", "Nicolas" ? Ne souriez pas, c'est toujours d'actualité, vous connaissez sûrement des collègues dans votre entourage qui utilisent toujours ce genre de passwords. A ce sujet, il existe un nombre important de consignes à ce sujet sur net, comme, par exemple :

http://www-chimie.u-strasbg.fr/membres/GB/Bon_MdP.html 

Mais comment obliger l'utilisateur à suivre ces conseils ? Il n'a pas le temps pour lire et comprendre (s'il arrive) ce discours. "Fabriquer les mot de passe de façon aléatoire !" - diriez vous. Mais que va faire l'utilisateur qui reçoit un nouveau mot de passe "Kj78n,77p" ? Oui, il va l'écrire sur un papier ou dans son agenda électronique et va vous maudire en douceur avant chaque connexion. C'est déjà pas facile de le faire venir sur le site, on va pas non plus lui rendre difficile la tâche d'y rester.

Pour la recherche d'accès, un pirate peut utiliser une méthode de tests de toutes les combinaisons possibles d'une suite de caractères ou de recourir à un dictionnaire de mots. (je n'évoque pas d'autres types d'attaques applicatives dont la responsabilité est sur nous, les techniciens). La première méthode est facilement contrée par une définition de longueur minimale de mot de passe, la deuxième est un peu plus dure à appliquer.

Et si nous profitions des dictionnaires des hackers pour effectuer la vérification du mot de passe avant de l'accepter ? Renversons la vapeur en utilisant les dictionnaires non pas pour vérifier la stabilité des comptes utilisateurs mais lors de création de nouveau compte ? C'est une idée que nous avons implémenté sur notre site web il y a quelque temps et cela donne des résultats. Nous n'avons plus de mots de passes simples, mais pas des combinaisons de lettres et de chiffres impossibles non plus.

Ce qui a été le plus dur ce n'est pas le code vbscript de vérification, mais la constitution d'une base de données de plus de 3 millions entrées. Mots anglais, français, italiens, russes, combinaisons de chiffres et lettres tout est présent dans cette base de données.

Voici le code asp pour la vérification :

<%
dim AdoDicoWordsPath, AdoDicoUser, AdoDicoUserPwd
AdoDicoWordsPath = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=E:\db\dico_words.mdb"
AdoDicoUser = "User"
AdoDicoUserPwd = ""

' Vérification de présence de mot demandé dans le dictionnaire des mots
function FindPwd(strPwd)
if strPwd="" or isnull(strPwd) then
FindPwd = true
else
' Create objects
Set objConnectionDico = Server.CreateObject("ADODB.Connection")
objConnectionDico.Open AdoDicoWordsPath, User, UserPwd
Set objRecordsetDico = Server.Createobject("ADODB.Recordset")

tSqlString = "SELECT words.Word " & _
"FROM words " & _
"WHERE words.Word='"& replace(strPwd, "'", "''") & "'"
objRecordsetDico.Open tSqlString, objConnectionDico, 0, 1, &H0001
FindPwd = not (objRecordsetDico.EOF)

objRecordsetDico.Close
objConnectionDico.Close
set objRecordsetDico = nothing
set objConnectionDico = nothing
end if
end function

' test
Response.Write "kuku - " & FindPwd("kuku") & "<br>"
Response.Write "test49 - " & FindPwd("test49")
%>

La base de données est disponible à l'adresse suivante :

www.fw-application.com/docs/dico_words.zip (40 Mo)

Si votre site ne peut pas héberger une base de données de cette taille, mais que vous voulez bénéficier de cette vérification, nous avons mis en œuvre un mécanisme suivant de vérification :
Dans votre application web, construisez une requête url suivante :

http://www.fw-application.com/gen_06.asp?mdp=<@word to verify@>&surl=

<@your web site success url@>&eurl=<@your web site error url@>

où :

* <@word to verify@> est le mot à vérifier
* le texte <@your web site success url@> est remplacé par l'url de page de succes sur votre site (où vous pouvez continuer l'enregistrement de l'utilisateur)
* le texte <@your web site error url@> est remplacé par l'url de page d'erreur (avec une invitation d'essayer un autre mot de passe)

Vous pouvez inclure d'autres paramètres d'url (nom d'utilisateur, prénom ...), ils seront redirigés aux deux pages.

Exemple :

http://www.fw-application.com/gen_06.asp?mdp=kuku&uname=Dimitri&ulng=ru&surl=

http%3A%2F%2Fwww.fw-application.com%2Fhome.asp&eurl=

http%3A%2F%2Fwww.fw-application.com%2Ferr_access.asp

Vous pouvez utiliser un formulaire avec la méthode Get et champs masqués : mdp, surl, eurl pour fabriquer cette url.

# Ah oui, j'ai failli oublier. Il est impératif d'enrichir ce dictionnaire avec des combinaisons de lettres et chiffres provenant du contexte de votre société: noms, prénoms, pays, ville, rue, station de métro
# années de naissance, téléphone fixes et portables

Utilisez pour cela des générateurs de dictionnaires disponibles sur le net (je ne peux pas en conseiller car je n'ai trouvé aucun qui me satisfaisait pleinement dans les options de générations de combinaisons)

Bon code et à la prochaine."

Dimitri ACHIKHMIN
Ingénieur produit FWA
Racine
 

Source: asp-php.net
Dernière mise à jour : ( 14-11-2006 )
< Précédent   Suivant >
Professional Development with Web APIs : Google, eBay, Amazon.com, MapPoint, FedEx
Professional Development with Web APIs : Google, eBay, Amazon.com, MapPoint, FedEx

Un livre idéal pour les programmeurs .Net qui veulent intégrer à leurs applications de commerce électronique, les fonctionnalités offertes à travers les services web de Google, Fedex, Ebay, Amazon et MapPoimt.

Après un bref rappel des concepts de base, ce livre aborde des sujets avancés comme l'appel des API à partir d'appareils mobiles ou des applications développées avec VBA, l'envoi d'un fax via l'API Paypal, la création de votre propre web API (cette liste n'est pas limitative). A la fin de ce livre vous trouverez des études de cas qui montrent comment utiliser les API précitées pour développer rapidement une application CRM et un un tableau de bord électronique.

 

Références

 

http://www.wrox.com/WileyCDA/WroxTitle/productCd-0764584456.html, Denise M. Gosnell, Wrox, ISBN: 0-7645-8445-6, April 2005, 324 pages

Moteur de recherche
Recommander ce site
Collaboration
Téléchargements
Derniers événements
Aucun événement
Sondages

Souhaiteriez-vous participer au développement d'un site e-commerce en .Net ?

  
Blogs Ecommerce
Blog de capitaine commerce
top

Ce site a été crée avec le CMS Mambo. Un logiciel gratuit disponible sous licence GPL.

Copyright Ecommerce DEV 2006.

Hosted by SiteGround