CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[PHP/VB] Connexion: Probleme de sécurité

HammerPoint
HammerPoint
Niveau 7
09 novembre 2014 à 02:46:20

Bonjour,

Je possède deux choses :

- Un logiciel en VB.NET
- Un site avec une base de données "Users" qui répertorie une liste d'utilisateur (ID ; User ; Pass ; Banned ; RegistrationDate)

Lorsqu'un utilisateur entre son pseudo et son mot de passe sur le logiciel, le logiciel accède à une page PHP du site en lui envoyant deux informations : L'username et le password (tapés par l'utilisateur)

Un script PHP va ensuite vérifier si l'utilisateur existe dans la base de données et si les mots de passe correspondent. La page PHP renvoie "OK" si le mot de passe est correct ; "UserNotFound" si l'utilisateur est introuvable dans la base de données et "BANNED" si l'utilisateur est banni.

Le logiciel VB.NET récupère le résultat pour ensuite faire le travail (si la page PHP renvoie "OK", le logiciel affiche une form ; si elle renvoie "BANNED" le logiciel affiche un message d'erreur ; etc...)

Il y a d'autre page PHP pour bannir un utilisateur par exemple.
Le logiciel devra accedez à monsite.com/ban.php?user=Utilisateur_a_bannir

Jusque là tout va bien. Tout est créer et tout fonctionne parfaitement.
Mais le gros problème est au niveau de la sécurité. Bien évidemment, tout est crypté (les mots de passe dans la base de données ; la réponse des scripts PHP (OK / BANNED / ...) mais il y a quand même un problème de sécurité.

C'est la première fois que je réalise un système de connexion comme ça et je ne sais pas du tout quoi faire pour le sécuriser.
Par exemple, un utilisateur peut très bien modifier les réponses des pages PHP (en recryptant le tout)
Ou encore pire, un utilisateur peut très bien accédez lui même, depuis son navigateur, à la page monsite.com/ban.php?user=Utilisateur_a_bannir et ainsi bannir n'importe quel utilisateur.

Bref, vous avez compris, j'ai tout fini mais je ne sais pas du tout quoi faire pour sécuriser ce système. Peut être que ce n'est pas du tout comme ça qu'il faut faire pour un système de connexion ; peut être qu'il manque 2/3 truc pour sécurisé ; peut être qu'il faut demander un mot de passe pour chaque requête PHP ; etc...

Je suis perdu et j'ai besoin de votre aide.

Merci d'avoir tout lu et merci d'avance pour vos réponses !

Enderith
Enderith
Niveau 9
09 novembre 2014 à 03:15:02

"VB.NET"

Un utilisateur jettera surtout un coup d'oeil sur la source, et à ce niveau là si tu as des choses à cacher cela va être difficile ...

HammerPoint
HammerPoint
Niveau 7
09 novembre 2014 à 13:27:51

Merci pour ta réponse Enderith :)

Pour ce qui est du programme VB, il n'y a pas trop de problème. J'ai d'assez bonne connaissance pour sécurisé le logiciel et faire en sorte qu'il soit difficile de voir le code source.

Donc admettons qu'il est impossible de voir le code source VB du programme, comment faire pour sécurisé la partie PHP ?

Pseudo supprimé
Pseudo supprimé 09 novembre 2014 à 16:33:29

https://www.jeuxvideo.com/forums/1-47-110805-1-0-1-0-php-vb-connexion-probleme-de-securite.htm#message_110832

Si ton programme est en en PHP hébergé sur un serveur, alors impossible d'en voir le code source.

Pseudo supprimé
Pseudo supprimé 09 novembre 2014 à 16:35:10

J'ajoute aussi que renvoyer "OK" quand le gars est connecté est une TRES TRES mauvaise idée :

J'utilise Charles Proxy, avec je fais une redirection de la page vers celle sur mon serveur qui renvoie toujours "OK" et voilà je me connecte facilement !

Trouve une solution

HammerPoint
HammerPoint
Niveau 7
09 novembre 2014 à 17:01:02

Nayed :d) Oui quand j'ai dit "sécurisé la partie PHP", je parlai d'éviter qu'un utilisateur quelconque puisse accédez à "monsite.com/ban.php?user=Utilisateur_a_bannir" par exemple.

Concernant le renvoie de "OK" lorsque le pseudo et le mot de passe sont correct, oui c'est une mauvaise idée tu as raison puisque l'on peut modifier la réponse (notamment avec le logiciel Fiddler qui fait tout le travail...) mais alors justement, comment faire ? Quel méthode utiliser pour bien réaliser ce système.

J'ai penser à cette méthode :

Le logiciel envoie une chaine aléatoire (ex: s5df4).
La page PHP crypte la réponse avec la clé "s5df4".
Le logiciel décrypte ensuite cette réponse.

De ce fait, ce n'est jamais la même réponse qui est renvoyé par le serveur, même si celui-çi renvoie "OK". L'utilisateur ne peut donc pas le décrypter ni le changer.

Est-ce une bonne solution ?

Elysop
Elysop
Niveau 8
09 novembre 2014 à 18:07:24

Envoie tes paramètres en POST plutôt qu'en GET.
L'utilisateur n'est pas censé connaitre l'existence de la page ban.php ?

HammerPoint
HammerPoint
Niveau 7
09 novembre 2014 à 18:29:05

Merci pour ta réponse Elysop :)

Comme je l'ai dit plus haut, il existe certains logiciel tel que Fiddler qui permettent d'intercepter TOUTES les requêtes qui passe par l'ordinateur.
L'utilisateur à juste à lancer le logiciel et Fiddler affiche toutes les requêtes sous forme de liste.

Exemple : Si mon programme VB accède à la page "monsite.com/ban.php?user=Utilisateur_a_bannir", le "hacker" verra, sur Fiddler, un truc de ce genre :

New request
Type : HTTP
URL: monsite.com
FullURL : monsite.com/ban.php?user=Utilisateur_a_bannir

Et même si j'envoie mes informations en POST, Fiddler permet de voir tous les arguments envoyé. Que ce soit en GET ou en POST.

Voilà un petit exemple lors d'une connexion à un site : https://image.noelshack.com/fichiers/2014/45/1415554086-capture.png

Comme tu peut le voir, TOUT est récupérable ET modifiable !

Pseudo supprimé
Pseudo supprimé 09 novembre 2014 à 21:46:36

Charles Proxy fait la même chose ^^

Crypter c'est le mieux ou alors tu inventes un système de hash qui permet de vérifier la réponse en fonction du programme et du retour en PHP...

Ou mieux, tu vérifies à chaque opération si l'utilisateur est bien connecté en utilisant une clef en md5 générée aléatoirement en fonction d'un cookie qui donne le temps de connexion.

Il y a 56634 possibilités.

HammerPoint
HammerPoint
Niveau 7
09 novembre 2014 à 22:37:35

Merci beaucoup Nayed !

Tu m'a donner quelques idées.

Par contre, tu peux, si ça ne te dérange pas, donner un peu plus de détails sur la deuxième possibilité s'il te plait ? ("Ou mieux, tu vérifies à chaque opération si l'utilisateur est bien connecté en utilisant une clef en md5 générée aléatoirement en fonction d'un cookie qui donne le temps de connexion.")

HammerPoint
HammerPoint
Niveau 7
15 novembre 2014 à 09:42:25

:up:

HammerPoint
HammerPoint
Niveau 7
25 janvier 2015 à 21:45:31

:up:

HammerPoint
HammerPoint
Niveau 7
25 janvier 2015 à 23:45:26

Merci à toi bluepoint_ je vais voir ça :)

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment