site à accès limité.

site à accès limité. - PHP - Programmation

Marsh Posté le 01-07-2007 à 17:49:08    

Bonjour,
 
Je dois créer un site à accès limité mais je me pose des questions sur la sécurité et la fiabilité.
Pour l'instant j'ai pensé à un système du genre :
inscription et confirmation envoyé à l'admin par email
une fois l'inscription confirmé on se logue et on vérifie mot de passe et login dans la BD et on ouvre une session avec par exemple $_SESSION['login']=true et sur chaque page avant d'afficher la page je vérifie si la variable est bien à true.  
 
mais j'avoue que je suis pas sur de mon coup. je veux pas non plus un site hyper méga blindé mais assez pour dissuader les gens de frauder (style trop de temps à cracker le site pour le contenu qu'on va y trouver). Pour info le contenu c'est des données géoréférencés.
 
voilà voilà
Sylvain

Reply

Marsh Posté le 01-07-2007 à 17:49:08   

Reply

Marsh Posté le 02-07-2007 à 10:54:39    

Je pense que ce que tu décris comme système de sécurité ici est suffisant pour ton site.
 
Au lieu de faire un $_SESSION['login'] tu peux carrément enregistrer le nom de l'utilisateur une fois qu'il est correctement identifié (par exemple $_SESSION['login'] = "Ernesto" ), puisque tu vas avoir tôt ou tard besoin de cette variable .. Ensuite au lieu de vérifier si $_SESSION['login'] == true, tu fais plutôt un if (isset($_SESSION['login']))
 
Autre chose : veille à encoder tes mots de passes dans ta BD pas en clair, mais en crypté, par exemple en md5. Il y a des fonctions toutes faites pour cela, je te laisse googler :)

Reply

Marsh Posté le 02-07-2007 à 12:42:14    

ZeBix a écrit :

Je pense que ce que tu décris comme système de sécurité ici est suffisant pour ton site.
 
Au lieu de faire un $_SESSION['login'] tu peux carrément enregistrer le nom de l'utilisateur une fois qu'il est correctement identifié (par exemple $_SESSION['login'] = "Ernesto" ), puisque tu vas avoir tôt ou tard besoin de cette variable .. Ensuite au lieu de vérifier si $_SESSION['login'] == true, tu fais plutôt un if (isset($_SESSION['login']))
 
Autre chose : veille à encoder tes mots de passes dans ta BD pas en clair, mais en crypté, par exemple en md5. Il y a des fonctions toutes faites pour cela, je te laisse googler :)


 
 
merci bien. j'ai déjà effectuer la modif pour le login, maintenant faut que je crypte. mais bon pas envi aujourd'hui ça attendra demain  :D  

Reply

Marsh Posté le 05-07-2007 à 23:36:28    

Je dirais que c'est un mauvais conseil que de vérifier uniquement l'existence d'une variable. Même si en soit dans le cas présent ça passe, de manière générale il vaut mieux éviter!  
 
Pourquoi? Parce qu'on est jamais à l'abris d'une faille et que typer fortement et vérifier ce qu'on attend permet de limiter la casse en cas de légère faille.
 
Exemple, imagines que tu laisses une faille qui permette de définir n'importe quelle variable de session. Login étant assez courant, ça facilite la tâche...

Reply

Marsh Posté le 10-07-2007 à 01:49:09    

Si t'es parano, le mieux c'est de reverifier a chaque page si les valeurs dans la session sont toujours valable.
Dans cet exemple, le cryptage est fait en sha1() : c'est mieux que md5()
Dans la base les pass sont crypté deux fois en sha1, dans la session une fois en sha1.
 

Code :
  1. if (!empty($_SESSION['login']))
  2. {
  3. $sql = sprintf("SELECT pass FROM table_users WHERE login = '%s'" ),mysql_real_escape_string($_SESSION['login']);
  4. if (!empty($_SESSION['pass'] && ($_SESSION['pass'] == sha1(mysql_result(mysql_query($sql),0))))
  5. {
  6.   $logged=true;
  7. }
  8. }


 
Libre a toi d'inverser les conditions, et de mettre du die();, mais là en principe c'est blindé :D
 
Encore mieux tu ne stock pas en session le "login" mais plutot le "userid" qui est un chiffre, et si ce n'est pas is_numeric() alors gros die() dans la gueule (et du coup t'es sûr de ne jamais avoir d'injection sql).

Message cité 1 fois
Message édité par ZePRiNCE le 10-07-2007 à 01:49:17

---------------
A VENDRE: Razer Chroma ARGB Controller / Boitier / Support Triple Screen / Ventirad / Carte USB3
Reply

Marsh Posté le 10-07-2007 à 02:58:55    

ZePRiNCE a écrit :

alors gros die() dans la gueule


 
 :lol:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed