2013-08-15 5 views
3

Lors de problèmes d'interruption de signal, le Ctrl-C SIGINT fermait ma session SSH. (Je suis sûr que vous avez tous déjà entendu ça, et j'en ai certainement marre - je ne vais donc pas m'expliquer davantage.) En résumé, je pourrais atteindre le résultat désiré en utilisant la fonction SendKeys.Pourquoi SendKeys est-il une mauvaise pratique?

Maintenant, beaucoup de gens déconseillent d'utiliser SendKeys à moins que ce soit absolument nécessaire. La méthode est souvent critiquée pour les failles de sécurité, mais la seule raison valable que je vois (mais ne comprends pas complètement) est qu'elle pourrait remplir le tampon du clavier - qui, s'il est mal géré, pourrait conduire à des résultats indésirables.

Toutes les autres raisons étaient simplement génériques "Cela cause des problèmes de sécurité. Ne l'utilisez pas." J'ai lu qu'il pourrait aider de manière significative à bloquer à la fois l'interaction de la souris et du clavier pendant le processus, comme l'utilisation de BlockInput.

Je pense que des résultats inattendus pourraient résulter de presque n'importe quoi de nos jours. Je veux savoir, en particulier, pourquoi c'est une si mauvaise pratique d'utiliser cette approche lors de la programmation, et de réellement comprendre ces failles de sécurité.

Répondre

2

Cette a utilisé pour être un problème de sécurité valide avant l'UAC. Par exemple, vous pouvez émettre ATL + CTRL + SUPPR ou copier des informations d'une application vers une application malveillante ou exécuter des scripts de clés sans le consentement de l'utilisateur.

Il est cependant probable que de nombreuses applications (même x directes) bloqueront SendKeys et vous obtiendrez des exceptions de sécurité.

Utilisez SendMessage ou SendInput comme alternatives.

Avec l'introduction de .NET 3 et le contrôle de compte d'utilisateur, ces lacunes ont été fermées. En fait, Windows 8 a été évalué sécurisé pour le gouvernement cette semaine.

Certaines applications comme Outlook peuvent générer des exceptions (pour de bonnes raisons) si vous essayez d'envoyer des clés. En outre, il n'y a probablement aucun mal à votre application en l'utilisant, le danger potentiel est un logiciel malveillant en utilisant la fonctionnalité.

Questions connexes