2010-10-12 5 views
2

J'ai une application qui se connecte à mon site Web pour vérifier les données utilisateur (identifiant matériel), mais si quelqu'un met une ligne dans le fichier hosts Windows, il pourrait être relayé vers un autre site. Ensuite, il obtient de mauvaises données et mon application est trompée. Alors, comment détecter si mon site web est relayé via le fichier hosts ou une autre application?Comment détecter si mon site Web est relayé via le fichier hosts ou une application

+0

Vous devez savoir qu'il n'existe aucun moyen 100% sécurisé de le faire tant que vous déployez un client qui peut être falsifié. –

Répondre

1

Utilisez SSL et refusez de fonctionner avec un certificat client invalide. De cette façon, une requête truquée à travers des hôtes (ou toute autre manière de rediriger vers où vous vous connectez) ne passera pas, un proxy ne peut pas la voir, et un proxy jouant l'homme-dans-le-milieu avec le certificat ne sera pas accepté (pensez à comment lorsque vous utilisez Fiddler pour déboguer le trafic HTTPS, vous obtenez le message "faites-vous confiance" sur votre navigateur, votre application fera l'équivalent de dire "non, je ne sais pas").

+0

Est-ce pas si difficile à faire en C#? Pouvez-vous pointer un article pour cela – blez

+0

En fait, il est plus difficile d'obtenir 'HttpWebRequest' d'ignorer les erreurs SSL avec les demandes HTTPS, car la valeur par défaut est de les étouffer. http://www.west-wind.com/weblog/posts/48909.aspx traite comment utiliser 'ServicePointManager.CertificatePolicy' pour faire cela (notez que' ServicePointManager.CertificatePolicy' est maintenant obsolète, voir http: // codebetter.com/blogs/rodpaddock/archive/2006/05/06/144181.aspx (vers la fin) sur le nouveau 'ServicePointManager.ServerCertificateValidationCallback' mais en VB), qui par extension donnera des indications sur la façon de s'assurer que vous êtes aussi verrouillé que vous le souhaitez. –

2

Pourriez-vous cryptographiquement signer les données (peut-être salées par client)? Le client peut avoir la clé publique, et vous pouvez l'utiliser (en toute sécurité) pour prouver que les données proviennent de votre serveur.

+0

Non, s'il ne peut pas se connecter au site, il montre une erreur. Si les données ne sont pas exactement la chaîne: "11" il exécute l'application en mode complet. Donc, un gars vient de relayer ma page Web à google.com et mon application pense que c'est mauvaise page d'accueil (pense que ma page d'accueil est piraté) – blez

Questions connexes