IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

"Identifier" l'ordinateur du client


Sujet :

Langage PHP

  1. #1
    Membre actif
    Homme Profil pro
    Freelance
    Inscrit en
    Décembre 2003
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Décembre 2003
    Messages : 423
    Points : 259
    Points
    259
    Par défaut "Identifier" l'ordinateur du client
    Bonjour,

    Bon ... je reconnais que mon titre de sujet n'est pas top et peut paraître un peu mal-honnête à priori. Soyons clair : il n'en est point

    Je souhaite en fait mettre en place sur un site un système de "votes". Un utilisateur (un compte) n'a le droit chaque jour de voter pour un même produit qu'une seule et unique fois.
    Afin d'éviter toute triche (une personne qui créerait plusieurs comptes fictifs pour voter pour un produit qu'il souhaite "faire gagner") je souhaite savoir s'il y a moyen d'identifier (ou de générer un identifiant) un ordinateur client pour m'assurer ainsi que même avec différents compte, une personne ne pourra voter plusieurs fois pour un même produit.
    Le problème n'est clairement pas la gestion des votes etc ici ... je cherche à savoir comment identifier le PC client.

    Nous sommes d'accord que rien n'est inviolable. Et qu'une personne maîtrisant à un plus ou moins bon degrés les techno du web et outils disponibles sur la toile, pourra contourner le système. Mais ce pourcentage de population sur la cible du site reste évalué à minime. Donc tant pis.

    Soyons clair, je ne veux pas simplement me baser sur l'@ IP. Ceci pour notamment le cas des petites entreprises ou le réseau est connecté derrière une box. Il faut que, dans l'entreprise si tous les employés ont un compte, ils puissent tous éventuellement voter pour le même produit.

    Un système par cookie n'est pas suffisant. Idéalement, je souhaiterais que depuis un même PC si l'utilisateur vote une fois via IE ... il ne pourra pas voter avec un autre compte via Firefox. Ou tout simplement après suppression des cookies.

    Quelles options me reste-t-il ?
    Je suis preneur d'à peu près tout type de solution basé sur l'HTML/PHP et Javascript (pas de Flash)

    Merci à quiconque s'intéressera à mon problème.
    "La théorie, c’est quand on sait tout et que rien ne fonctionne. La pratique, c’est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : rien ne fonctionne ... et personne ne sait pourquoi !" et malheureusement c'est souvent le cas en Développement...

  2. #2
    Expert confirmé
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 451
    Points : 4 600
    Points
    4 600
    Par défaut
    Salut,

    en plus de tes verifs (cookies, ip, etc..)
    tu peux ajoute une table qui liste les ids utilisateurs, et les id produits pour lesquels ils ont vote.
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  3. #3
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Quelle que soit la solution que tu vas prendre, le seul moyen sûr à 100% est de forcer l'utilisateur à s'authentifier. C'est en revanche très pénible pour lui. Pense à bien refuser la création de compte avec des faux emails (comme ceux de yopmail).
    Pense aussi à mettre un capcha, y'aura toujours des gogos pour faire des robots

    En d'autres-termes, il est pratiquement impossible d'identifier le navigateur du client (que ce soit par IP ou par cookie). C'est l'utilisateur que tu dois identifier.

  4. #4
    Membre actif
    Homme Profil pro
    Freelance
    Inscrit en
    Décembre 2003
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Décembre 2003
    Messages : 423
    Points : 259
    Points
    259
    Par défaut
    Bonjour,

    ... Je pense que j'ai été mal compris.

    Nous sommes d'accord que sur le principe rien est inviolable. Je cherche juste à bloquer la majorité des utilisateurs + les petits bidouilleurs. Il existera toujours un moyen de contourner le système.

    Doksuri > comme je l'ai dit, je ne cherche pas à savoir comment mettre en place le système de votes pour vérifier qu'un utilisateur ne votera qu'une seule fois par jour. Là n'est pas mon soucis ... (je redécris ci-après ce que je cherche en fait)

    Benjamin >
    Quelle que soit la solution que tu vas prendre, le seul moyen sûr à 100% est de forcer l'utilisateur à s'authentifier
    C'est déjà le cas en fait : ne peuvent voter que des utilisateurs enregistrés (et authentifiés).
    Pense à bien refuser la création de compte avec des faux emails (comme ceux de yopmail).
    Justement mon soucis est en partie ce point là : il est impossible d'empêcher la création de faux comptes. Interdire les adresses yopmail spamavert et companie est aisé ... mais :
    1- non exhaustif ;
    2- insatisfaisant dans le sens où du moment que tu possède une adresse GMail ... tu possèdes une infinité d'adresses mails ... là encore tu me diras on peut faire un filtre dessus etc etc ... Mais deux vrais adresses ne sont pas compliquer à trouver non plus ;


    Pour en revenir à ma question initiale, ce que je cherche à faire c'est qu'un PC ne puisse voter qu'une seule et unique fois par jour. Ma question est donc "comment réussir à identifier un PC ?"

    Je cherche une solution HTML / PHP / Javascript.

    Je sais que c'est éventuellement faisable en Java ... mais je ne souhaite pas m'en servir.
    En Java (une applet) j'ai la possibilité de récupérer l'@ IP locale du PC ... à partir de là je peux générer un hash IP Publique / IP locale qui me permettra d'identifier le PC. Cette sécurité est aisée à contourner pour toute personne capable de configurer soit même son réseau ... mais comme je l'ai dit, ce n'est pas la cible du site, donc cette sécurité serait jugée comme acceptable (et puis on peut imaginer derrière prendre en compte le nom du PC ... et tout autre information disponible).

    Donc ma question est, quelles méthodes d'identification du PC, comme je vous ai présenté avec l’applet Java, existe-t-il en PHP/Javascript (comprendre pas de Flash, pas de Java ....) et autre que Cookie et simplement REMOTE_HOST_ADRESS de l'en-tête HTTP ?


    Quoiqu'il en soit, merci de m'avoir répondu.
    "La théorie, c’est quand on sait tout et que rien ne fonctionne. La pratique, c’est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : rien ne fonctionne ... et personne ne sait pourquoi !" et malheureusement c'est souvent le cas en Développement...

  5. #5
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Justement mon soucis est en partie ce point là : il est impossible d'empêcher la création de faux comptes. Interdire les adresses yopmail spamavert et companie est aisé ... mais :
    1- non exhaustif ;
    2- insatisfaisant dans le sens où du moment que tu possède une adresse GMail ... tu possèdes une infinité d'adresses mails ... là encore tu me diras on peut faire un filtre dessus etc etc ... Mais deux vrais adresses ne sont pas compliquer à trouver non plus ;
    Tu ne pourra jamais te prémunir totalement contre le multi-compte.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Donc ma question est, quelles méthodes d'identification du PC, comme je vous ai présenté avec l’applet Java, existe-t-il en PHP/Javascript (comprendre pas de Flash, pas de Java ....) et autre que Cookie et simplement REMOTE_HOST_ADRESS de l'en-tête HTTP ?
    Je ne pense pas (de mémoire) que JavaScript te permette d'avoir accès à l'IP locale de la machine - au pire pose ta question sur le forum JavaScript.
    En revanche une vérification par cookie est assez aisée à fabriquer et relativement sécurisée si additionnée avec la vérification du membre.
    Tu pourrais aussi t'orienter vers les certificats signés et HTTPS mais c'est une technologie que je ne maitrise pas et qui n'est pas gratuite (le certificat est payant, regarde par exemple sur http://www.verisign.com/).

  6. #6
    Membre actif
    Homme Profil pro
    Freelance
    Inscrit en
    Décembre 2003
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Décembre 2003
    Messages : 423
    Points : 259
    Points
    259
    Par défaut
    Tu ne pourra jamais te prémunir totalement contre le multi-compte.
    Nous sommes bien d'accord ...

    Je ne pense pas (de mémoire) que JavaScript te permette d'avoir accès à l'IP locale de la machine - au pire pose ta question sur le forum JavaScript.
    Malheureusement non, moi non plus je ne crois pas que ce soit possible en JS (pur).
    Je vais tout de même faire une ou deux petites recherches.

    Tu pourrais aussi t'orienter vers les certificats signés et HTTPS mais c'est une technologie que je ne maîtrise pas et qui n'est pas gratuite
    Effectivement le certificats pourrait fonctionner ... mais comme tu le précises parfaitement : c'est payant ... et c'est, pour le moment, pas possible à mettre en place de notre côté.

    En revanche une vérification par cookie est assez aisée à fabriquer et relativement sécurisée si additionnée avec la vérification du membre.
    Oui, je suis d'accord avec toi que par Cookie c'est facilement et rapidement faisable. Sauf que les cookies sont un peu les sytèmes de bases de sécurité que les gens connaissent. Donc le premier truc qu'ils essaient de contourner (sans parler des personnes qui configurent leur navigateur pour supprimer automatiquement les cookies à la fermeture ...). Ou comme je le disais simplement en changeant de navigateur (car les cookies ne sont pas partagés d'un navigateur à l'autre).


    Dans le fond, mon sujet et plus une question ouverte : comment sécuriser au mieux (partant du principe que rien est inviolable) un tel système de vote à base de HTML / PHP / JS ?
    - @IP publique uniquement => insuffisant (bloque le réseau complet d'une maison et non d'un ordinateur)
    - Cookie simple => insuffisant : changement de navigateur et/ou nettoyage des cookie font sauter la protection.
    - Récupération de l'@IP locale de la machine => ok ... mais semble impossible en JS, à explorer ...
    - Certificats => contrainte de paiement non admissible dans mon cas
    - Autre méthode ?


    Merci pour votre investissement,
    "La théorie, c’est quand on sait tout et que rien ne fonctionne. La pratique, c’est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : rien ne fonctionne ... et personne ne sait pourquoi !" et malheureusement c'est souvent le cas en Développement...

  7. #7
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Oui, je suis d'accord avec toi que par Cookie c'est facilement et rapidement faisable. Sauf que les cookies sont un peu les sytèmes de bases de sécurité que les gens connaissent. Donc le premier truc qu'ils essaient de contourner (sans parler des personnes qui configurent leur navigateur pour supprimer automatiquement les cookies à la fermeture ...). Ou comme je le disais simplement en changeant de navigateur (car les cookies ne sont pas partagés d'un navigateur à l'autre).
    Après tout la vérification par cookie est un sous ensemble de la vérification par authentification. Je ne suis pas sûr du coup que ça vaille le coup, il suffit d'un vérification coté PHP au niveau de l'utilisateur.

    Dans le fond, mon sujet et plus une question ouverte : comment sécuriser au mieux (partant du principe que rien est inviolable) un tel système de vote à base de HTML / PHP / JS ?
    Comme tu dis, rien n'est inviolable. Tu vérifie strictement tous les cas que tu sais prendre en charge, tu blinde le code de l'application et c'est tout ce que tu peux faire a moins de disposer des certificats.
    De toute façon soyons honnêtes, personne ne va aller "pirater" ton système de vote pour le plaisir.

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 182
    Points : 178
    Points
    178
    Par défaut
    Bonjour,

    Tu as dors et déjà listé toi même, je pense, toutes les possibilités offertes par les technos de ton projets.

    Ce que tu peux chercher derrière ce sont des méthodes de blocage post-bypass (ouahouh le beau néologisme)
    Exemple:
    tu peux verifier qu'un type qui revote le lendemain ou se reconnecte dans la journée a toujours son cookie en place.
    Tu peux sinon faire des tests croisés, coupler @ip et navigateur, etc.

    Ou sinon j'y pense en écrivant cette réponse, c'est moche mais: FBconnect. Tous les votant doivent avoir FB pour voter. ça peut limiter un peu la casse, et ça donne une meilleur visibilité de ton site au niveau social ranking.
    Mais bon... Facebook quoi ...

  9. #9
    Membre actif
    Homme Profil pro
    Freelance
    Inscrit en
    Décembre 2003
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Décembre 2003
    Messages : 423
    Points : 259
    Points
    259
    Par défaut
    Je viens de voir qu'au sein de Javascript il existe un "wrapper" Java autorisant des appels à des méthodes statiques de package Java.

    Il existe notamment, dans le package "net" dans la classe "InetAddress" la méthode "getLocalHost()".

    En test en direct dans mon navigateur, cela ne semble pas pleinement fonctionner (je ne récupère rien). Peut-être une piste à explorer ?


    Alors oui, je sais j'ai dit "pas de Java" ... mais je ne savais pas qu'il était possible de faire des appels Java depuis JS ... ce qui pour moi change la donne (pas de création d'applet, invisible pour l'utilisateur ...).
    Je vais voir ce qu'il est donc faisable avec ça.

    Tu as dors et déjà listé toi même, je pense, toutes les possibilités offertes par les technos de ton projets.
    dommage ... j'avais bon espoir

    Ce que tu peux chercher derrière ce sont des méthodes de blocage post-bypass (ouahouh le beau néologisme)
    Exemple:
    tu peux verifier qu'un type qui revote le lendemain ou se reconnecte dans la journée a toujours son cookie en place.
    Tu peux sinon faire des tests croisés, coupler @ip et navigateur, etc.
    Cela reveindrai en fait à faire une sorte de système expert qui apprend des utilisateurs et qui est capable de déterminer deux personnes pseudo-identique ... cela sous-entends une phase d'apprentissage du système (durant laquelle une personne va réussir à voter plusieurs fois pour un produit ...) ... c'est éventuellement à creuser ... mais trop complexe pour mon cas.

    Ou sinon j'y pense en écrivant cette réponse, c'est moche mais: FBconnect. Tous les votant doivent avoir FB pour voter. ça peut limiter un peu la casse, et ça donne une meilleur visibilité de ton site au niveau social ranking.
    Mais bon... Facebook quoi ...
    Ca peut effectivement réduire (on peut supposer que le nombre de compte FB est assez limité par utilisateur). Mais ceci est effectivement valable pour un site très orienté "réseau social" (l'obligation de connexion par FBConnect ... ça restreint ton publique).

    Merci pour ton intervention cela dit


    Et même merci à vous deux ...

    Je vous tiens au courant pour mon test Javascript.
    "La théorie, c’est quand on sait tout et que rien ne fonctionne. La pratique, c’est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : rien ne fonctionne ... et personne ne sait pourquoi !" et malheureusement c'est souvent le cas en Développement...

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 182
    Points : 178
    Points
    178
    Par défaut
    Petite parenthèse hors sujet:
    Mais ceci est effectivement valable pour un site très orienté "réseau social"
    Pour moi intégrer un système de vote c'est faire du social, en interne au site, mais c'est demande l'avis d'une communauté.
    Je ne connais pas l'objet de ton site, mais très clairement si tu veux faire les choses "bien" joue la carte du social à fond, ne serait-ce que sur cet aspect là !
    Au pire externalise ton vote sur un compte FB du site.
    Je ne suis pas un FB Addict, mais il parait admis par la communauté e-marketeuse, qu'ajourd'hui les concept de FB et de webreput, sont incontournables.

Discussions similaires

  1. Pb set quoted identifier
    Par Yanmeunier dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 19/12/2005, 13h43
  2. Pb Set quoted Identifier
    Par Yanmeunier dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 05/12/2005, 10h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo