Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/05/2006, 10h26   #1
Membre éclairé
 
Avatar de speedev
 
Développeur Web
Inscription : mai 2006
Messages : 936
Détails du profil
Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2006
Messages : 936
Points : 347
Points : 347
Par défaut [Sécurité] PHP, identification unique ?

Bonjour,

Je développe un site expérimental en php/ajax/smarty avec Gestion d'utilisateurs.

Je recherche LE système de sécurité le plus efficace possible.
Petit aperçu de mon système actuel:
- Stockage en DB des logins+pass et ip
- Création de sessions contenant login+pass ($_session) si connexion valide.
- Modules de contrôle d'existence de session, de login et de Ban (si un user est banni sur IP ou sur login, reco au bout de 15/30 minutes) sur chaque page.
- Timer JS/AJAX sur chaque page qui deconnecte un utilisateur automatiquement (à une seconde prêt) si l'administrateur l'a banni de lui-même ou s'il a tenté 3 connexions échouées (MAJ dans la table des IP).

Biensur mon système ne me convient pas tout à fait. En effet puisque je me sers de l'IP de l'utilisateur pour le bannir, un réseau local derrière un routeur se verrait banni entièrement (pdt les 15/30 minutes décidées) puisque l'IP publique est la même pour chaque poste (c'est le cas du système de ban de developpez.com d'ailleurs ... j'ai banni les développers de ma boite pdt 15 minutes hier lol).

Donc, actuellement, lors d'un ban sur ip, il suffit pour l'utilisateur de se reconnecter, de se voir attribuer une nouvelle ip et de refaire des tentatives de connexion au site. Un acharné ne serait pas dérangé par ce système.

Il n'y a pas d'identification unique d'un poste sur internet, seulement avec le FBI, les crackers etc...qui font des prouesses sans arrêt, je me dis que peut-être une astuce existe! J'ai pensé récupérer des informations locales diverses par javascript seulement c'est transparent et pas très "pro".

Je ne compte pas utiliser d'activeX ni même de WSH etc...

Je pourrais éventuellement utiliser l'HTTP_USER_AGENT ou l'HOST de la trame mais c'est facile à contourner en utilisant un autre navigateur etc...etc...

Simplement : Comment bannir un poste situé derrière un réseau local qui dispose d'une IP publique unique? Héhé, on va me dire "pas possible" mais je ne sais pas pourquoi...je suis têtu de sentir que c'est POSSIBLE en récupérant une certaine information unique bidon et infalsifiable (genre une clé, une version d'un soft, quelquechose d'absolu) mais bon ça se saurait!
Simplement2: Y voyez-vous un autre système de sécurité pour mon site?

Merci
speedev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/05/2006, 10h29   #2
Membre éclairé
 
Avatar de speedev
 
Développeur Web
Inscription : mai 2006
Messages : 936
Détails du profil
Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2006
Messages : 936
Points : 347
Points : 347
Par défaut multipost

Hey c'est spé, ça fait deux fois en deux jours que je fais un multipost ss le vouloir, et deux fois que developpez.com me déllogue à l'envoi du message, pourtant il transfère bien le message apparement..ya un hic de dev!
speedev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/05/2006, 10h49   #3
Rédacteur/Modérateur
 
Avatar de gorgonite
 
Homme Nicolas Vallée
Ingénieur Système
Inscription : décembre 2005
Messages : 9 774
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Vallée
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Ingénieur Système
Secteur : Transports

Informations forums :
Inscription : décembre 2005
Messages : 9 774
Points : 14 303
Points : 14 303
Citation:
Comment bannir un poste situé derrière un réseau local qui dispose d'une IP publique unique? Héhé, on va me dire "pas possible" mais je ne sais pas pourquoi...je suis têtu de sentir que c'est POSSIBLE en récupérant une certaine information unique bidon et infalsifiable (genre une clé, une version d'un soft, quelquechose d'absolu) mais bon ça se saurait!
un cookie...mais il peut le supprimer
gorgonite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/05/2006, 10h50   #4
Rédacteur/Modérateur
 
Avatar de gorgonite
 
Homme Nicolas Vallée
Ingénieur Système
Inscription : décembre 2005
Messages : 9 774
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Vallée
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Ingénieur Système
Secteur : Transports

Informations forums :
Inscription : décembre 2005
Messages : 9 774
Points : 14 303
Points : 14 303
Citation:
voyez-vous un autre système de sécurité pour mon site?
perso, je separerais encore plus la gestion des utilisateurs grace a un ldap, mais bon tout depend comment tu heberges ton site...
gorgonite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/05/2006, 10h52   #5
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Salut

Il y a déjà un sujet de 8 pages à ce sujet. Je te propose de le parcourir et de nous faire part là-bas de tes remarques :

[Login membre] Sécurité TOTALE !!!
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/05/2006, 11h11   #6
Membre éclairé
 
Avatar de speedev
 
Développeur Web
Inscription : mai 2006
Messages : 936
Détails du profil
Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2006
Messages : 936
Points : 347
Points : 347
Par défaut Survol et reformulation

Merci beaucoup, j'ai survolé le topic mais ça ne me concerne pas, il est bien trop généralisé et s'embarque trop rapidement dans un débat puriste sur la sécurité parfaite des servers dédiés lol (d'où sa mise en POST-IT).

Je ne compte pas utiliser l'HTTPS ni SSL ni de HASH md5.

Il s'agit d'un site expérimental que je développe destiné pour l'instant à rester expérimental à ne pas être dédié et à fonctionner comme tout site classique PHP qui dispose d'un système d'authentification ...

Je recherche un système de sécurité qui n'existe pas et qui est "infaillible" (haaa là j'ai tout de suite l'air idiot lol), c'est pourquoi je vais reformuler ma question:

"Quelle est selon vous la (ou les) donnée native récupérable PHP/JAVASCRIPT la plus explicite dans l'identification d'un poste sur le 'web' ??"

Par ailleurs je tiens à préciser que les éventuels membres du site seront ou bien des amis ou bien de la famille (totale confiance dans les deux cas), je n'envisage donc aucune protection interne contre les membres.

Là où j'en suis actuellement c'est que je ban qlqun qui tente de se connecter plus de trois fois (débanni au bout de 15 minutes), seulement je ban en mm tps tous les postes se trouvant derrière un réseau local (l'ip publique étant la mm pour chaque poste)...VOILA! Haaa j'aurai dû commencer par là! Je veux pouvoir bloquer définitivement un poste et cela mm si c'est impossible ( ).

Merci!
speedev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/05/2006, 11h28   #7
Candidat au titre de Membre du Club
 
Inscription : février 2006
Messages : 41
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 41
Points : 11
Points : 11
si ça peut t'aider :

le site kadokado.com interdit la création de plus de deux comptes par jour depuis la même IP (tu suis ?), en tout cas c'est ce qu'ils disent ("IP"). Car à mon univ, il suffit de se mettre sur le poste d'à côté pour pouvoir recréer un compte, alors que la limite est atteinte sur le premier PC. Pourtant vu du net, les 2 ont sûrement la même IP !

Donc il doit exister une solution. (je dis n'importe quoi, mais l'adresse physique est peut-être visible par PHP non?)

De toutes façons, il est mauvais aussi de bannir un PC, s'il est public...
wishmastah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/05/2006, 11h30   #8
Membre éclairé
 
Avatar de speedev
 
Développeur Web
Inscription : mai 2006
Messages : 936
Détails du profil
Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2006
Messages : 936
Points : 347
Points : 347
Par défaut pas d'@ mac

L'adresse mac est dans la couche physique et invisible sur le net.
Dans ton cas c'est le routeur qui est l'explication logique...
Le routeur renvoi la requête à l'adresse IP LOCALE de ta machine donc.
C'est pourquoi chaque poste peut recréer un compte.

Dans mon cas je récupérère l'adresse du routeur (évidement).

Merci de ta réponse
speedev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/05/2006, 11h41   #9
Membre éclairé
 
Avatar de speedev
 
Développeur Web
Inscription : mai 2006
Messages : 936
Détails du profil
Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2006
Messages : 936
Points : 347
Points : 347
Par défaut Petit détail

Ha oui je tiens à dire aussi que l'idée de parvenir à identifier un poste de manière unique sur le web vient d'une solution ajax que j'ai choisie. A chaque clic sur la page de login, une requête est exécutée par XHRconnexion et envoie un message indiquant si "connexion valide" (2sec d'attente et redirection) ou "connexion échouée", à ceci s'ajoute mon timer AJAX qui toutes les secondes effectue une requete php pour récupérer le nombre d'essais restants disponible pour l'IP en cours et affiche le resultat dans le petit cadre juste en dessous du formulaire de login. Cela fait une interface de connexion vraiment classe qui réponds a chaque requête de manière automatisée.

Seulement...héhé je me suis connecté à mon site sur un autre poste du réseau local qui se voit attribuer toutes les secondes l'actualisation du nombre d'essais restants du poste qui tente de se connecter.

Une fois que le poste 1 est connecté. Le poste 2 a automatiquement le message suivant "vous êtes déjà connecté".

Ca permet d'empêcher un utilisateur d'ouvrir plusieurs sessions sur le site (ça je l'interdis, c'est un choix réfléchis ^^). Seulement si je n'arrive pas à identifier un poste sur le web, tous les postes derrière un réseau local sont interdis d'accès le temps que le poste 1 se déconnecte et libère une session.

Moi je veux autoriser une session par poste!!!
speedev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/05/2006, 12h06   #10
Candidat au titre de Membre du Club
 
Inscription : février 2006
Messages : 41
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 41
Points : 11
Points : 11
rajoute un cookie en plus non ?
wishmastah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/05/2006, 12h21   #11
Membre éclairé
 
Avatar de speedev
 
Développeur Web
Inscription : mai 2006
Messages : 936
Détails du profil
Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2006
Messages : 936
Points : 347
Points : 347
Par défaut cookie

Ben le soucis des cookies c'est que tous les postes peuvent les refuser et qu'un cookie a une durée de vie limitée...mais oui je vais aussi utiliser ça!

En fait je viens de cogiter un bon moment et je me résouds à conserver mon système actuel qui n'est pas si mal que ça à part qu'il banne par IP donc tout un réseau local derrière un routeur...

C'est le cas de developpez.com...et c'est dommage!

j'ai pensé utiliser une appli windev qui disposerait d'une clé unique (comme les cnx SSH) et que le server controlerait par une autre appli windev...donc chaque poste client du site doit avoir l'appli en question. Seulement ça fait de la bidouille réseau et ça impose que le membre ne puisse se connecter à mon site que depuis son poste ou depuis un autre poste mais avec la clé. pfouuuu!

Un collègue vient de me causer d'un système de reconnaissance de la frappe au clavier (robot ou humain) qui est tout récent et pas tout à fait encore fiable à 100%. Bon bref, faut pas rêver...

J'ai choisi finalement ça:
-->identification IP
-->identification user agent
-->Une protection supplémentaire : dépôt de cookie
-->Une protection imposante supplémentaire : qui ferme le site si le nb de ban dépasse 3 en 2 minutes.(ouais ça déconnecterait tout le monde d'un coup c'est hard...)
--> ET BAN d'un pseudo si tenté 3 fois sans succès!

ha ouais sinon une autre astuce, créer un timestamp entre l'heure de la machine cliente et l'heure du server et contrôler la différence entre les deux. Seulement c'est grillé pour les réseaux qui ont un server de temps...;(

Bon je vais arrêter de me cramer les neurones pour ça même si j'adore me cramer les neurones

En tout cas je suis à l'écoute de toutes vos inventions!

Merci!
speedev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/05/2006, 13h08   #12
Membre Expert
 
Homme
Inscription : janvier 2004
Messages : 1 238
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Secteur : Finance

Informations forums :
Inscription : janvier 2004
Messages : 1 238
Points : 1 421
Points : 1 421
Citation:
Envoyé par speedev
Bon je vais arrêter de me cramer les neurones pour ça même si j'adore me cramer les neurones
Je crois que la phrase est bien choisie ;o)

Tu dis qu'il s'agit d'un site d'amis ou de membres de la meme famille, et tu cherches a utiliser des systemes de ouf pour proteger le contenu... il s'agit de la famille du directeur de la NSA ?

Dans tout développement, il y a toujours *mieux*, il faut donc a chaque fois savoir distinguer ce que est necessaire du superflu. Cela est d'autant plus vrai quand on attaque le domaine de la sécurité.
La sécurité est un compromis entre la sécurité totale et l'ergonomie. Tu peux aussi enregistrer une liste de 100 questions/reponses personnes pour tes membres et obliger tes membres a répondre juste 4 fois d'affiler parmis des questions aléatoires tirées dans le pool pour acceder au site...

De plus, point de vue developpement, meme si ca fait tres *chef de projet* ou ce que tu veux (et que je comprenne ton point de vue, étant moins meme un poil perfectionniste ;o), il ne faut pas oublier qu'il vaut mieux passer 10h sur une portion de code utilisée 99% du temps, que 2h sur une portion de code utilisée 0,01% du temps... or là, je crois que tu fait le contraire ;o)

Il est impossible de bannir completement qqun qui a de petites connaissances en informatique, il suffit de trouver un proxy ou un anonymiseur pour passer toutes les barrieres. Un ban limité dans le temps sur une IP en cas de connection infructueuse a répétition, oui, c'est deja tres bien... ca evite les attaques simples par force brute. Mais je crois pas qu'il faille chercher beaucoup plus loin (surtout pour un projet non professionnel ;o)
__________________
PHP :
Regle n°1 : mysql_query(...), mysql_connect(...) et mysq_select_db(...) doivent EN DEBUG etre suivies de or die(mysql_error()); (mais jamais en production)
Regle n°2 : Mieux encore : mysql_query($requete) or die("$requete<br/>".mysql_error());
Regle n°3 : echo '<pre>';var_dump($var);echo '</pre>'; affiche le contenu et le type d'une variable.
Publiez vos textes de fantasy et de science-fiction sur http://www.cercledefaeries.com/concours/
Fladnag est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/05/2006, 14h19   #13
Membre éclairé
 
Avatar de speedev
 
Développeur Web
Inscription : mai 2006
Messages : 936
Détails du profil
Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : mai 2006
Messages : 936
Points : 347
Points : 347
Par défaut Huhuhu

Ha non non ma famille n'est pas celle du dirlo de la NSA mais quitte à ce qu'un pirate ne choppe pas la photo de ma frangine à walpé dans la douche...^^

Bon, ce site a un interêt professionnel avant toute chose biensur!
Mais cette recherche obstinée me permet de me familiariser avant tout avec les langages de développement, les différents environnements informatiques innovants et les différentes possibilités. Ensuite vient l'intérêt personnel! Quitte à ce que le travail me permette de m'épanouir dans mes loisirs tout en favorisant mon expérience de développement...tant mieux c'est tout bénef'!

A la base j'ai une formation réseau, mais maintenant je suis développeur et je m'embarque facilement dans des trucs extra-informatique. Ca va se tasser rapidement...

Mais il ne faut pas oublier que:
Mon système actuel fonctionne nickel! lol
Et si on ne tente pas l'impossible de temps en temps ça ne sert à rien de faire du développement.
Un esprit curieux dans le domaine du développement est à 100% le meilleur esprit...Faut juste fixer des limites...j'vais le faire j'vais le faire...

a+
speedev est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h35.


 
 
 
 
Partenaires

Hébergement Web