Je vais être un peu hérétique et aller sur une branche et dire:
- Vous avez vraiment besoin de parler à l'
administrateur système/réseau de gens qui fixent
leurs machines. Ces gens traitent du concept de la des cambriolages chaque jour, et sont toujours à l'affût pour les menaces potentielles pour être utilisé contre eux. Pour la plupart, ignorent la "motivation" aspect de la façon dont les attaquants pense que, comme les jours de "piratage de notoriété" ont disparu depuis longtemps. Se concentrer plutôt sur la méthodologie. Compétent, l'administrateur sera en mesure de le démontrer facilement.
Lorsque vous écrivez un programme, la présentation de ce qui est (je l'espère), un uniforme, une interface lisse à ${importe quoi d'autre-accepte-vos-programmes-I/O}. Dans ce cas, il peut être un utilisateur final, ou il peut être un autre processus sur une autre machine, mais il n'a pas d'importance. Supposons TOUJOURS que le "client" de votre application est potentiellement hostile, qu'il s'agisse d'une machine ou d'une personne.
Ne me croyez pas? Essayez d'écrire une petite application qui prend les commandes de vente de vendeurs, alors une règle de la compagnie que vous avez besoin pour faire appliquer par le biais de cette application, mais les vendeurs sont constamment essayer d'obtenir autour de sorte qu'ils peuvent faire plus d'argent. Juste ce petit exercice, seul, permettra de montrer comment un attaquant motivé - dans ce cas, l'intention de l'utilisateur final sera activement à la recherche de moyens soit pour exploiter des failles dans la logique, ou de jeu, le système par d'autres moyens. Et ce sont de confiance des utilisateurs finaux!
Multijoueur jeux en ligne sont constamment en guerre contre les tricheurs, car le logiciel serveur généralement approuve le client; et dans tous les cas, le client peut et va être piraté, résultant dans les joueurs de jeu du système. Pensez à ceci: ici, nous avons des gens qui sont tout simplement profiter eux-mêmes, et ils vont utiliser des mesures extrêmes pour gagner la haute main dans une activité qui n'implique pas de faire de l'argent.
Imaginez la motivation d'un professionnel de bot herder qui rend leur argent pour vivre de cette façon...en écrivant des logiciels malveillants afin qu'ils puissent utiliser les machines des autres comme des générateurs de revenus, la vente de leurs réseaux de zombies à l'enchérisseur le plus offrant pour spam massif des inondations...oui, cela fait vraiment arriver.
Quelle que soit la motivation, le point reste, votre programme peut, et à un certain point, être l'objet d'attaques. Ce n'est pas suffisant pour le protéger contre les dépassements de tampon, d'écrasement de la pile, la pile d'exécution (code-que-chargement des données dans la pile, puis un retour est fait pour décharger la pile, conduisant à l'exécution du code), de l'exécution des données, le cross-site scripting, élévation de privilèges, conditions de course, ou d'autres "programmatique", les attaques, bien qu'il ne l'aide. En plus de votre "standard" programmatique défenses, vous aurez également besoin de penser en termes de confiance, de vérification, de l'identité et des informations d'identification - en d'autres mots, traitant de tout ce qui est de la prestation de votre programme d'entrée et de tout ce qui est encombrant votre programme de sortie de. Par exemple, comment se défendre contre l'empoisonnement DNS à partir d'un point de vue des programmes? Et parfois, vous ne pouvez pas éviter de choses dans le code de l'obtention de vos utilisateurs finaux à ne pas laisser leurs mots de passe à vos collègues de travail en est un exemple.
Intégrer ces concepts dans une méthodologie pour la sécurité, plutôt que d'une "technologie". La sécurité est un processus, pas un produit. Lorsque vous commencez à penser à ce qui est "de l'autre côté" de votre programme, et les méthodes que vous pouvez employer pour atténuer ces problèmes, il deviendra beaucoup plus clair quant à ce qui peut bien se passer, et ce qui peut aller terriblement mal.