2009-04-17 8 views
0

Je suis responsable d'une application qui utilise Internet pour transférer des données entre les sites, et certains clients ont des difficultés à payer, nous avons donc besoin d'un mécanisme qui nous permette de couper le service des non-payeurs. Je voudrais protéger contre les administrateurs qui utilisent des pare-feu pour bloquer nos chèques, mais inversement, je voudrais donner une certaine chance pour le site Web de notre société qui disparaît pour une raison quelconque et n'est pas accessible.Activation/désactivation à distance et protection contre la sous-entreprise

Le schéma que je me fais est:

server makes twice daily check to web page using a URL like: 
http://www.ourcompany.com/check.php?myID=GUID&Code=MyCode 

Cela retourne une réponse qui contient soit rien d'intéressant, ou le GUID et une valeur.

GUID=0 

Ce zéro indique que le serveur doit cesser son fonctionnement. Pour que cela fonctionne à nouveau, le serveur vérifie toutes les 5 minutes pour la même information, jusqu'à ce que la valeur corresponde à ce à quoi il pense que le code dans lequel il est passé devrait être transformé.

Ce schéma a du sens pour moi, mais la question est vraiment de savoir comment se protéger contre le blocage. Étant donné que nous savons que nous devons avoir accès à Internet, combien de temps devrions-nous continuer à fonctionner sans pouvoir obtenir la réponse de notre serveur Web? Est-ce quelque chose comme 14 jours et puis nous avons juste fermé de toute façon la meilleure façon?

Répondre

1

La solution que j'ai utilisée à la fin était à peu près comme je l'ai suggéré. Oui, c'est défiable en utilisant les outils décrits ici, mais c'est mieux que rien.

L'application vérifie quotidiennement l'accès à un site Web contenant un fichier de contrôle chiffré à l'aide du chiffrement à clé publique. Il décrypte en mémoire, et s'il trouve son GUID, il doit correspondre à un code. Pour désactiver l'opération, le code est mis à 0 (zéro) qui échouera toujours. Lorsqu'il est désactivé, il vérifie toutes les deux minutes pour permettre une restauration rapide. Il existe également un mécanisme manuel pour générer un code qui fonctionnera pendant une semaine en cas de problème de serveur.

Le code autorisera jusqu'à 14 jours sans se connecter au serveur avant de le prendre comme une tentative délibérée de le bloquer. Après 10 jours, il affiche un message d'erreur qui lui demande de contacter le support.

0

Cette méthode est vraiment facile à contourner: il suffit d'utiliser un serveur DNS local pour diriger www.ourcompany.com vers la machine locale, ou utiliser un proxy http. Ensuite, l'utilisateur peut renvoyer la réponse qu'il souhaite au programme. En supposant que l'utilisateur n'a pas contourné la vérification, la durée pendant laquelle vous devez continuer à fonctionner sans confirmation est une décision commerciale et non une décision de programmation.

+0

Hmm, oui. D'accord, nous irons avec un fichier crypté à clé publique de sorte que nous devons avoir un bon téléchargement et décoder ou il "échoue". Décision d'affaires ou de programmation? Peut-être, mais c'est à moi, le programmeur, à résoudre. – mj2008

0

Un utilisateur peut utiliser un outil tel que OWASP WebScarab pour modifier des valeurs à la volée afin de subvertir votre modèle de sécurité. Vous devez inclure quelque chose de plus difficile, comme exiger un canal sécurisé, comparer une clé publique, etc.