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

Développement Discussion :

Réaliser un Chat avec support IP


Sujet :

Développement

  1. #1
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut [Résolu] Réaliser un Chat avec support IP
    Salut! Bah tiens, vous allez sûrement pouvoir me conseiller alors!
    Je compte faire un chat en me servant de l'ip, mais je n'y connais pas grand chose en fait.
    Je me demande surtout quels sont les risques que cela peut engendrer, et quels sont les parades pour s'en protéger?

    ps: si vous ne voulez pas vous prendre la tête à me répondre, c'est pas grave!
    Je comprendrais... à+

  2. #2
    Membre expérimenté
    Avatar de nyal
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    622
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2002
    Messages : 622
    Points : 1 428
    Points
    1 428
    Par défaut
    Bonjour,

    Citation Envoyé par Sub0
    Salut! Bah tiens, vous allez sûrement pouvoir me conseiller alors!
    Je compte faire un chat en me servant de l'ip, mais je n'y connais pas grand chose en fait.
    Je me demande surtout quels sont les risques que cela peut engendrer, et quels sont les parades pour s'en protéger?
    Un chat n'engendre aucun risque s'il est bien programmer. S'il n'y a pas de possibilités d'overflow...

    Ce qui engendre un risque, c'est qu'une personne pourra recuperer des IP. Si la personne n'utilise pas de masquerading d'IP (en frontal) alors la personne aura accés directement a sa machine.
    Et aprés ce n'est plus de ton ressort. C'est a la personne d'avoir un pc un minimum sécurisé.

    Pour eviter que la personne puisse voir les IP, il te faudra passer par un serveur centralisé. Mais tu t'ecartes de ton programme de base.

  3. #3
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Merci pour ta réponse!

    J'avais profité d'un sujet sur le chat pour poster ma question, mais c'est vrai qu'il vallait mieux en faire un nouveau...
    Je vous explique un peu comment je compte procéder, pour que vous puissiez me dire si ya danger:

    Mon programme (un EXE pour Windows), éxécute une page PHP qui détecte l'IP du client, et l'enregistre sur mon serveur FTP (dédié) dans un petit fichier texte. Ainsi, pour chaque personne utilisant le prog (à la connexion), on a sur le serveur, la liste des IP et login de tous les utilisateurs actuellement connectés. Ensuite, il choisit l'utilisateur avec lequel il veut parler, la connexion se fait directement par les sockets en utilisant les IP... Je vais le programmer avec Delphi 6 perso, et utiliser les composants TClientSocket / TServerSocket.

    Je n'utiliserai donc pas de serveur central, mais celui qui choisit un correspondant dans la liste, sera le serveur de la communication (je verrais après pour la conversation à plusieurs). Je ne veux pas non plus que mon PC soit le serveur principal, ce qui obligerait à le garder allumé et connecté pour que le chat fonctionne il me semble...

    Est-ce-que cette méthode est dangeureuse pour les utilisateurs?
    Si oui, comment leur apporter un peu plus de sécurité? (je pense par ex, crypter les IP)
    Et enfin, quels sont les problèmes que je risque de rencontrer?

    Merci de votre aide!

  4. #4
    Membre expérimenté
    Avatar de nyal
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    622
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2002
    Messages : 622
    Points : 1 428
    Points
    1 428
    Par défaut
    Citation Envoyé par Sub0
    Est-ce-que cette méthode est dangeureuse pour les utilisateurs?
    Je t'ai deja expliqué les problemes. Ce n'est pas dangereux pour l'utilisateur s'il a sécurisé son pc. Puis il connait les risques.

    Citation Envoyé par Sub0
    Si oui, comment leur apporter un peu plus de sécurité? (je pense par ex, crypter les IP)
    Aucun interet. Car quand tu seras connecté avec ton correspondant, tu pourras voir son ip aisement (netstat...)

    Citation Envoyé par Sub0
    Et enfin, quels sont les problèmes que je risque de rencontrer?
    C'est un peu icq que tu veux faire. Simplement tu ne veux pas centraliser les données sur un serveur.
    Cependant ton procédé est different et il y a des problemes visibles tres rapidement.
    Comme celui-ci :
    Comment tu vas faire avec les personnes ayant une ip non fixe ? (dhcp) C'est emmerdant de s'inscrire cent fois.
    Sachant que les IP non fixe changent d'utilisateurs. Je vais me retrouver a discuter avec une personne que je ne connais pas.

    Je pense qu'il va te falloir mettre en palce un systeme de compte. Je ne vois pas de solutions la. Je vais y reflechir pour garder l'idée de base de ton programme.
    Il doit y avoir d'autres problemes mais il sont mineurs.

    Voila

  5. #5
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Citation Envoyé par nyal
    Comment tu vas faire avec les personnes ayant une ip non fixe ? (dhcp) C'est emmerdant de s'inscrire cent fois.
    Sachant que les IP non fixe changent d'utilisateurs. Je vais me retrouver a discuter avec une personne que je ne connais pas.
    Pour sélectionner une personne, on choisit son Login (pas son IP). Le Login renverra l'IP correspondante. Si le programme détecte que l'IP a changé lors d'une deconnexion, de toute façon, il la réactualise dans la liste sur le serveur à la reconnexion. Et si quelqu'un est déconnecté sans avoir eu le temps de s'effacer de la liste, il sera supprimé de la liste, par quelqu'un d'autre qui l'aura choisi (détection d'IP non connectée)...
    .
    Citation Envoyé par nyal
    Il doit y avoir d'autres problemes mais il sont mineurs.
    Ça m'intérresse tout de même!

    Citation Envoyé par nyal
    Si la personne n'utilise pas de masquerading d'IP (en frontal) alors la personne aura accés directement a sa machine.
    Pourrais-je intégrer un masquerading d'IP dans mon programme? Ou bien forcer l'utilisateur à en avoir un?
    Je ne connais pas... Est-ce-que cela pourrait éviter de voir son IP avec NetStat?

    Merci de ton aide!

  6. #6
    Membre expérimenté
    Avatar de nyal
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    622
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2002
    Messages : 622
    Points : 1 428
    Points
    1 428
    Par défaut
    Citation Envoyé par Sub0
    Pour sélectionner une personne, on choisit son Login (pas son IP). Le Login renverra l'IP correspondante. Si le programme détecte que l'IP a changé lors d'une deconnexion, de toute façon, il la réactualise dans la liste sur le serveur à la reconnexion. Et si quelqu'un est déconnecté sans avoir eu le temps de s'effacer de la liste, il sera supprimé de la liste, par quelqu'un d'autre qui l'aura choisi (détection d'IP non connectée)...
    Ca revient a un icq donc. Vu qu'il y a un serveur qui garde les informations.

    Citation Envoyé par nyal
    Il doit y avoir d'autres problemes mais il sont mineurs.
    Citation Envoyé par Sub0
    Ça m'intérresse tout de même!
    Comment tu feras l'identification ? (mot de passe)
    Le serveur (ou se trouve les données) choisit le port de communication des clients ?
    Est ce que tu crypteras les informations ?

    Citation Envoyé par nyal
    Si la personne n'utilise pas de masquerading d'IP (en frontal) alors la personne aura accés directement a sa machine.
    Pourrais-je intégrer un masquerading d'IP dans mon programme? Ou bien forcer l'utilisateur à en avoir un?
    Je ne connais pas... Est-ce-que cela pourrait éviter de voir son IP avec NetStat?
    [/quote]

    Disons qu'on verra l'ip de sa passerelle. Et non de sa machine.
    Tu ne pourras pas utiliser de masquerading d'IP vu que c'est de la connexion direct entre clients.
    Un des moyens est de passer par le serveur comme j'ai dit auparavant. Cependant cela debouchera tres vite sur un gros influx réseau.

  7. #7
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Très intérressant! Pas si mineurs que ça comme problèmes j'ai l'impression!

    Citation Envoyé par nyal
    Comment tu feras l'identification ? (mot de passe)
    Le serveur (ou se trouve les données) choisit le port de communication des clients ?
    Est ce que tu crypteras les informations ?
    Ben, je n'y ai pas trop réfléchi encore à l'identification. Je voulais d'abord savoir si cette méthode était correcte avant d'aller plus loin. En ce qui concerne le port de communication, je ne sais pas comment cela fonctionne exactement! Je vais commencer à me renseigner sur le sujet... Je compte crypter les informations qui serviront à identifier l'utilisateur.
    -> Si tu as de bonnes idées ou des combines, je suis preneur! Que me conseillerais-tu stp?

    Citation Envoyé par nyal
    Un des moyens est de passer par le serveur comme j'ai dit auparavant. Cependant cela debouchera tres vite sur un gros influx réseau.
    Tanpis pour le masquage d'IP alors!
    Je crois qu'il existe une solution qui se nomme "no-ip"... Cela pourrait-il faire l'affaire?

  8. #8
    Membre expérimenté
    Avatar de nyal
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    622
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2002
    Messages : 622
    Points : 1 428
    Points
    1 428
    Par défaut
    Citation Envoyé par Sub0
    Citation Envoyé par nyal
    Comment tu feras l'identification ? (mot de passe)
    Le serveur (ou se trouve les données) choisit le port de communication des clients ?
    Est ce que tu crypteras les informations ?
    Ben, je n'y ai pas trop réfléchi encore à l'identification. Je voulais d'abord savoir si cette méthode était correcte avant d'aller plus loin.
    Tu n'as pas donné toutes les indications mais ca me semble plutot correct et realisable.

    Citation Envoyé par Sub0
    En ce qui concerne le port de communication, je ne sais pas comment cela fonctionne exactement! Je vais commencer à me renseigner sur le sujet... Je compte crypter les informations qui serviront à identifier l'utilisateur.
    Si tu cryptes la trame d'identification. Autant que tu cryptes tout alors. Apres avoir choisi ton algo de cryptage, tu devras faire des petits tests pour voir si ca tient la route niveau vitesse.

    Citation Envoyé par Sub0
    -> Si tu as de bonnes idées ou des combines, je suis preneur! Que me conseillerais-tu stp?
    Je n'ai pas de combines a te donner pour le moment. Pour un programme reseau, il faut le penser enormement. C'est le gage de la reussite. Ne pas y aller tete baisse. La programmation ensuite est hyper simple une fois qu'il ya un algo papier qui tient la route.
    Mais si tu as des problemes d'ordres techniques (car ca arrivera surement). N'hesites pas.

    Citation Envoyé par Sub0
    Citation Envoyé par nyal
    Un des moyens est de passer par le serveur comme j'ai dit auparavant. Cependant cela debouchera tres vite sur un gros influx réseau.
    Tanpis pour le masquage d'IP alors!
    Je crois qu'il existe une solution qui se nomme "no-ip"... Cela pourrait-il faire l'affaire?
    Il faudrait que tu developpes l'idée car je ne vois pas a quoi ca correpsond.

    Il faudrait aussi que tu identifies bine le role du serveur. Ce qu'il fait.
    Comme par exemple, est ce qu'il envoit les gens loggué au client ? Est ce qu'il integre un systeme de ban list ? Utilise t il un serveur de type mysql pour faire les stockages des informations ?

    Il y a un certain nombres de points a penser. Si tu veux integrer les chats a plusieurs, il va te falloir reflechir sur qui, va faire le relais entre les clients connectés. (Le client qui va jouer un role de serveur)
    Aussi si tu ouvriras plusieurs ports ou les connexions se feront sur un seul. Sur la technologie que tu vas utiliser :
    -> les threads
    -> le select
    Si tu veux que ton programme soit portable Unix, windows. La il faudra faire attention a pleins de choses.

    Voila voila

  9. #9
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Bien bien!

    Tu as raison, je vais bien réfléchir à l'algo avant de programmer quoi que ce soit! C'est assez compliqué mine de rien, il faut penser à plein de chose, et la plupart, j'en avais aucune idée! Je croyais pouvoir faire quelque chose de simple, mais ça ne l'est pas finalement...

    Citation Envoyé par nyal
    Aussi si tu ouvriras plusieurs ports ou les connexions se feront sur un seul. Sur la technologie que tu vas utiliser :
    -> les threads
    -> le select
    Je vais me renseigner sur ce point, car je n'y connais rien!

    Citation Envoyé par nyal
    Si tu veux que ton programme soit portable Unix, windows. La il faudra faire attention a pleins de choses.
    Ben, le programme sera réalisé avec Delphi, donc pour Windows. A partir du moment où il fonctionnera sur ma machine (winxp pro), je pense qu'il fonctionnera aussi sur les autres, non? Bref, je ne vois pas bien de quoi il sagit là...

    En tous les cas, merci beaucoups pour tous tes conseils!
    Je commence mes recherche sur ce forum...

  10. #10
    Membre expérimenté
    Avatar de nyal
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    622
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2002
    Messages : 622
    Points : 1 428
    Points
    1 428
    Par défaut
    Citation Envoyé par Sub0
    Citation Envoyé par nyal
    Si tu veux que ton programme soit portable Unix, windows. La il faudra faire attention a pleins de choses.
    Ben, le programme sera réalisé avec Delphi, donc pour Windows. A partir du moment où il fonctionnera sur ma machine (winxp pro), je pense qu'il fonctionnera aussi sur les autres, non? Bref, je ne vois pas bien de quoi il sagit là...
    Ah tu le fais en delphi. D'accord. Le probleme ne se pose pas. Je pensais que tu le faisais en C.

    Mais sinon, tu verras que c'est super simple (surtout en delphi) si tu penses bien le truc . Tu arriveras a quelque chose de fonctionnel en quelques heures de travail.

  11. #11
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    MERCI!!!


  12. #12
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Finalement, voici la méthode que j'ai choisi : J'ai centralisé les membres sur un serveur http (scripts PHP & MySQL). A chaque connexion ou requête, le membre envoit son login et son IP (au cas où elle changerait, le serveur avertirait les machines connectées). Lorsque les membres veulent se parler, celui qui sera serveur récupère l'IP du client dans la liste et il se connecte sur un port (peut-être sur le même, suivant le résultat des tests). Cela signifie aussi que le client doit bien évidemment être à l'écoute. Pour le reste, je continu à étudier vos différentes propositions (http://www.progzone.free.fr/reseau/s...sockasync.html)

    Dans le cas où l'ordinateur refuserait la connexion directe, les nouveaux messages serait uploadés sur le serveur dans un dossier "mail" du membre. Le membre est ensuite averti de nouveaux messages et les télécharge lors de sa connexion au serveur. Pour réafficher la liste des membres connectés et surveiller le serveur, j'utiliserai un système "pull" (un requête est envoyée au serveur à chaque timeout). Je l'ai testé avec Delphi & PHP et ça à l'air de bien fonctionner.

    En espèrant avoir fait les bons choix, je compte très prochainement passer de la théorie à la pratique, mais si vous avez encore des suggestiuons, je suis preneur, à+

  13. #13
    Membre actif Avatar de orelero
    Étudiant
    Inscrit en
    Novembre 2004
    Messages
    389
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2004
    Messages : 389
    Points : 274
    Points
    274
    Par défaut
    oui no-ip est genial pour simuler une ip fixe, je m'en sert pour le serveur d'un chat que j'ai créé, et ça marche trés bien , en plus c'est gratuit.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. réaliser des etats avec jbuilder
    Par 2j dans le forum JBuilder
    Réponses: 3
    Dernier message: 14/01/2006, 18h59
  2. Comment créer un chat avec VB 6 ?
    Par magic8392 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 21/10/2005, 15h37
  3. Réaliser calendrier perpetuel avec EXEL
    Par Perdus dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 20/10/2005, 08h05
  4. Le chat (avec les sockets) sans frames.
    Par azmeuk dans le forum Langage
    Réponses: 1
    Dernier message: 18/10/2005, 19h47
  5. [imprecis]Réaliser a^n avec seulement l'opérateur d'addition
    Par Amon dans le forum Algorithmes et structures de données
    Réponses: 18
    Dernier message: 08/11/2002, 22h22

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