2017-09-16 1 views
0

Notre application utilise client/serveur architecture, il fonctionne sur Windows.Est-il sûr d'authentifier l'utilisateur contre le serveur https?

Nos utilisateurs doivent se connecter au client avec l'utilisateur/mot de passe via http (ou https dans le futur), et obtenir leurs autorisations.

Auparavant, nous utilisons protocole http, de sorte que le contrat entre le client et le serveur a déjà été observé par certains clients.

Maintenant, nous avons activé le protocole https (en utilisant Let's Encrypt), mais je ne sais toujours pas s'il est fiable pour éviter que l'utilisateur ne pirate le processus d'authentification.

Voici ce que je peux voir moyen potentiel de pirater le protocole en utilisant un faux serveur:

  1. Faire une adresse IP à l'hôte (réel nom d'hôte) mappage dans le fichier des hôtes
  2. Faire un faux serveur http qui utilise ci-dessus ip, et sert la même API auth que notre serveur.

Le client utilise cpprestsdk pour envoyer des requêtes http. Étant donné que le serveur Web est public, l'utilisateur peut facilement obtenir un ca en utilisant le navigateur comme chrome, semble qu'il est facile d'intercepter la demande/réponse https en utilisant wireshark.

Ma question est la suivante: est-ce que mon hypothèse est valide? Si oui, comment pourrais-je faire plus de changements pour éviter cela dans une autre version.

Répondre

0

Votre question est valide et https est sujette à une attaque de type "man-in-the-middle" (MITM). Vous devez utiliser l'en-tête de réponse HTTP Public-Key-Pins. Il associe une clé publique cryptographique spécifique à un certain serveur web pour diminuer le risque d'attaques MITM avec des faux certificats. Si une ou plusieurs clés sont épinglées et qu'aucune d'entre elles n'est utilisée par le serveur, le navigateur n'acceptera pas la réponse comme légitime et ne l'affichera pas. Vous pouvez lire les détails ici - https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Public-Key-Pins

+0

L'intermédiaire peut-il modifier les données? Puisque le site Web contient la clé privée, je suppose que l'intermédiaire ne peut pas modifier les données, ai-je raison? – user1633272

+0

Le navigateur de l'utilisateur envoie les données au serveur, mais l'intermédiaire intercepte la communication et peut afficher/modifier les données. – ManishSingh

+0

Le navigateur de l'utilisateur envoie les données au serveur mais l'intermédiaire intercepte la communication et peut voir/modifier les données. L'homme du milieu présente son certificat public à l'utilisateur final au nom du serveur réel, ils créent un faux site Web similaire et intercepte la demande. Middle man ont une clé privée pour leur certificat afin qu'ils puissent voir les données. L'homme du milieu transmet la demande au serveur réel en utilisant le certificat public du serveur et transmet la réponse à l'utilisateur final. – ManishSingh