Je suis un étudiant en informatique et je suis maintenant en 3ème année à l'université. Jusqu'à présent, nous avons étudié de nombreux sujets liés à l'informatique en général (programmation, algorithmes, architecture informatique, mathématiques, etc.).
Je suis persuadé que personne ne peut tout apprendre sur la sécurité, mais que tous les programmeurs ou étudiants en informatique doivent en avoir une connaissance "minimale" et ma question est la suivante: quelle est cette connaissance minimale?
Pouvez-vous suggérer des livres électroniques ou des cours ou quelque chose peut aider à commencer avec cette route?
Principes à garder à l'esprit si vous souhaitez que vos applications soient sécurisées:
Il existe d'excellents livres et articles en ligne sur la sécurisation de vos applications:
Formez vos développeurs aux meilleures pratiques de sécurité des applications
Codebashing (payé)
Innovation en matière de sécurité (payé)
boussole de sécurité (payé)
OWASP WebGoat (gratuit)
Règle n ° 1 de sécurité pour les programmeurs: Ne lancez pas votre propre
utilisez toujours une plate-forme de sécurité, un framework ou une bibliothèque bien conçu, bien testé et mature. faire le travail pour vous. Ces choses ont passé des années à être réfléchies, corrigées, mises à jour et examinées par des experts et des pirates informatiques. Vous voulez obtenir ces avantages, pas les rejeter en essayant de réinventer la roue.
Cela ne veut pas dire que vous n’avez pas besoin d’apprendre quoi que ce soit sur la sécurité. Vous devez certainement en savoir assez pour comprendre ce que vous faites et vous assurer que vous utilisez les outils correctement. Cependant, si vous êtes sur le point de commencer à écrire votre propre algorithme de cryptographie, système d'authentification, désinfectant d'entrée, etc., arrêtez-vous, revenez en arrière et souvenez-vous de la règle n ° 1.
Chaque programmeur devrait savoir comment écrire un code d'exploitation.
Sans savoir comment les systèmes sont exploités, vous arrêtez accidentellement les vulnérabilités. Savoir comment corriger le code n'a aucune signification si vous ne savez pas comment tester vos correctifs. La sécurité ne consiste pas seulement en une série d'expériences de pensée, vous devez être scientifique et tester vos expériences.
La sécurité est un processus, pas un produit.
Beaucoup semblent oublier cette évidence.
Je suggère de consulter CWE/SANS TOP 25 erreurs de programmation les plus dangereuses (---) . Il a été mis à jour pour 2010 avec la promesse de mises à jour régulières dans le futur. La révision 2009 est également disponible.
De http://cwe.mitre.org/top25/index.html
Le Top 25 des erreurs de programmation les plus dangereuses 2010 de CWE/SANS est une liste des erreurs de programmation les plus répandues et les plus critiques pouvant conduire à de graves vulnérabilités logicielles. Ils sont souvent faciles à trouver et à exploiter. Ils sont dangereux car ils permettent souvent à des attaquants de prendre le contrôle intégral du logiciel, de voler des données ou d’empêcher le logiciel de fonctionner.
La liste des 25 meilleurs est un outil d’éducation et de sensibilisation destiné à aider les programmeurs à prévenir les vulnérabilités de l’industrie du logiciel, en identifiant et en évitant les erreurs les plus courantes qui se produisent avant même que le logiciel ne soit livré. Les clients logiciels peuvent utiliser la même liste pour les aider à demander un logiciel plus sécurisé. Les chercheurs en sécurité logicielle peuvent utiliser le Top 25 pour se concentrer sur un sous-ensemble étroit mais important de toutes les faiblesses de sécurité connues. Enfin, les gestionnaires de logiciels et les DSI peuvent utiliser la liste Top 25 pour mesurer les progrès accomplis dans la sécurisation de leurs logiciels.
Le MIT de réseaux informatiques et sécurité est un bon débutant. Une chose que je suggérerais est de ne pas oublier la vie privée. La confidentialité, à certains égards, est vraiment fondamentale à la sécurité et n'est pas souvent abordée dans les cours techniques sur la sécurité. Vous trouverez peut-être des informations sur la vie privée dans ce cours sur Éthique et droit en ce qui concerne Internet.
L’équipe Web Security de Mozilla a mis au point un excellent guide , que nous respectons dans le développement de nos sites et services.
L'importance des valeurs par défaut sécurisées dans les frameworks et les API:
Vous devriez savoir sur les trois A. Authentification, autorisation, audit. L'erreur classique consiste à authentifier un utilisateur, sans vérifier si cet utilisateur est autorisé à effectuer une action. Un utilisateur peut donc consulter les photos privées d'autres utilisateurs, ce que Diaspora a commis. Beaucoup, beaucoup plus de gens oublient Audit, vous avez besoin, dans un système sécurisé, de pouvoir dire qui a fait quoi et quand.
J'ajouterais ce qui suit:
Comprendre le fonctionnement de différents vecteurs d'attaque:
Vous pouvez facilement google pour tout cela. Cela vous donnera une bonne base. Si vous voulez voir les vulnérabilités des applications Web, il existe un projet appelé google gruyere qui vous explique comment exploiter une application Web opérationnelle.
lorsque vous construisez une entreprise ou un de vos propres logiciels, vous devez simplement penser comme un pirate informatique. Comme nous le savons, les pirates informatiques ne sont pas non plus des experts dans tous les domaines, mais lorsqu'ils découvrent une vulnérabilité, ils commencent à y creuser en rassemblant des informations sur tous les éléments. les choses et enfin attaquer notre logiciel. de manière à prévenir de telles attaques nous devrions suivre des règles bien connues comme:
vous pouvez trouver plus de ressources de sécurité sur les liens suivants:
pour plus d'informations sur Google sur les flux de sécurité de votre fournisseur d'applications.
Assurez-vous également de consulter la liste liste OWASP Top 1 pour une catégorisation de tous les principaux vecteurs/vulnérabilités d'attaque.
Ces choses sont fascinantes à lire. Apprendre à penser comme un attaquant va vous apprendre à quoi penser lorsque vous écrivez votre propre code.
Pour des informations générales sur la sécurité, je recommande fortement de lire Bruce Schneier . Il a un site Web, son bulletin d'information crypto-gramme , plusieurs livres , et a fait beaucoup de entretiens .
Je me familiariserais également avec l'ingénierie sociale (et Kevin Mitnick ).
Pour un bon (et plutôt amusant) livre sur la sécurité dans le monde réel, je recommanderais l'excellent (bien qu'un peu daté) 'The Cuckoo's Egg' de Cliff Stoll.
Salez et hachez les mots de passe de vos utilisateurs. Ne les enregistrez jamais en texte brut dans votre base de données.
Je voulais juste partager ceci pour les développeurs Web:
guide de sécurité pour les développeurs
https://github.com/FallibleInc/security-guide-for-developers