425 votes

Ce que chaque programmeur sait au sujet de la sécurité?

Je suis un étudiant et je suis maintenant en 3ème année à l'université. Jusqu'à maintenant, nous avons été l'étude d'un lot de sujets liés à des ordinateurs en général (programmation, algorithmes, architecture informatique, les mathématiques, etc).

Je suis très sûr que personne ne peut apprendre chaque chose à propos de la sécurité, mais bien sûr, il est un "minimum" de connaissances chaque programmeur ou l'étudiant doit le savoir et ma question est qu'est-ce que ce minimum de connaissances?

Pouvez-vous suggérer quelques e-books ou des cours ou quoi que ce soit peut aider à démarrer avec cette route?

549voto

bignum Points 2140

Principes à garder à l'esprit si vous voulez que vos applications pour être sûr:

  • Ne faites jamais confiance à n'importe quelle entrée!
  • Valider la saisie de toutes les sources non fiables - utiliser des listes blanches pas des listes noires
  • Plan pour la sécurité de la start - ce n'est pas quelque chose que vous pouvez boulon à la fin
  • Keep it simple - la complexité augmente la probabilité de trous de sécurité
  • Gardez votre surface d'attaque à un minimum
  • Assurez-vous d' échouer en toute sécurité
  • Utilisez la défense en profondeur
  • Respecter le principe de moindre privilège
  • L'utilisation de la menace de la modélisation
  • Compartimenter - de sorte que votre système n'est pas tout ou rien
  • Secrets cachés est dur et les secrets cachés dans le code ne sera pas à rester secrète très longtemps
  • Ne pas écrire votre propre crypto
  • À l'aide de la cryptographie ne signifie pas que vous êtes sûr (attaquants recherchez un faible lien)
  • Être au courant des dépassements de la mémoire tampon et comment s'en protéger

Il y a d'excellents livres et des articles en ligne dans vos applications sécurisées:

102voto

Tyler McHenry Points 35551

Règle n ° 1 de la sécurité pour les programmeurs: Ne pas rouler votre propre

Sauf si vous êtes vous-même un expert en sécurité et/ou de cryptographe, toujours utiliser un bien conçues, testées, et de la maturité de la plateforme de sécurité, cadre, ou à la bibliothèque pour faire le travail pour vous. Ces choses ont passé des années à être pensé, corrigés, mis à jour, et examinés par des experts mais aussi des pirates. Vous souhaitez profiter de ces avantages, pas les rejeter en essayant de réinventer la roue.

Maintenant, cela ne veut pas dire que vous n'avez pas besoin d'apprendre quoi que ce soit à propos de la sécurité. Vous avez certainement besoin d'en savoir assez pour comprendre ce que vous faites et assurez-vous que vous êtes en utilisant les outils correctement. Toutefois, si jamais vous vous trouvez sur le point de commencer à écrire votre propre algorithme de chiffrement, l'authentification de système, d'entrée de désinfectant, etc, s'arrêter, prendre du recul, et n'oubliez pas la règle #1.

70voto

Rook Points 34698

Chaque programmeur doit savoir comment écrire un code d'exploitation.

Sans savoir comment les systèmes sont exploités vous accentually l'arrêt de vulnérabilités. Savoir comment patcher le code est absolument vide de sens, sauf si vous savez comment faire pour tester vos patchs. La sécurité n'est pas juste un tas d'expériences de pensée, vous devez être scientifique et de tester vos expériences.

41voto

eteubert Points 1990

La sécurité est un processus, pas un produit.

Beaucoup semblent oublier ce fait.

23voto

jschmier Points 8088

Je suggère de revoir le CEMT/SANS TOP 25 des Plus Dangereuses Erreurs de Programmation. Il a été mis à jour pour 2010, avec la promesse de mises à jour régulières à l'avenir. L' 2009 révision est également disponible.

À partir de http://cwe.mitre.org/top25/index.html

L'2010 CEMT/SANS Top 25 des Plus Dangereuses Erreurs de Programmation est une liste de la plus répandue et la critique des erreurs de programmation qui peut conduire à de graves vulnérabilités logicielles. Ils sont souvent faciles à trouver et faciles à exploiter. Ils sont dangereux parce qu'ils vont souvent permettre à des attaquants de prendre complètement le logiciel, voler des données ou empêcher le logiciel de travail à tous.

Le Top 25 de la liste est un outil d'éducation et de sensibilisation pour aider les programmeurs à prévenir les types de vulnérabilités qui affligent l'industrie du logiciel, en identifiant et en évitant tout-trop-commune erreurs qui se produisent avant que le logiciel est même livré. Logiciel les clients peuvent utiliser la même liste pour les aider à demander plus de logiciels sécurisés. Des chercheurs en sécurité de logiciel pouvez utiliser le Top 25 de se concentrer sur un plus petit mais important sous-ensemble de l'ensemble des failles de sécurité. Enfin, les gestionnaires de logiciels et les Dsi peuvent utiliser le Top 25 de la liste comme un bâton de mesure de progrès dans leurs efforts pour obtenir leur logiciel.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X