Existe-t-il des meilleures pratiques pour tester la sécurité dans une boutique de développement Agile?

Translate

Concernant le développement Agile, quelles sont les meilleures pratiques pour tester la sécurité par version?

S'il s'agit d'une version mensuelle, y a-t-il des magasins qui font des tests de stylo tous les mois?

This question and all comments follow the "Attribution Required."

Toutes les réponses

Translate

Quel est votre domaine d'application? Ça dépend.

Puisque vous avez utilisé le mot «Agile», je suppose que c'est une application Web. J'ai une bonne réponse facile pour vous.

Allez acheter une copie de Burp Suite (c'est le résultat n ° 1 de Google pour "burp" --- une approbation sûre!); cela vous coûtera 99EU, ou ~ 180 USD, ou 98 USD Obama si vous attendez jusqu'en novembre.

Burp fonctionne comme un proxy Web. Vous naviguez dans votre application Web en utilisant Firefox ou IE ou autre, et elle collecte tous les hits que vous générez. Ces hits sont alimentés par une fonction appelée "Intruder", qui est un fuzzer Web. Intruder déterminera tous les paramètres que vous fournissez à chacun de vos gestionnaires de requêtes. Il essaiera ensuite des valeurs folles pour chaque paramètre, y compris SQL, le système de fichiers et les métacaractères HTML. Sur une publication de formulaire complexe typique, cela va générer environ 1500 appels, que vous examinerez pour identifier les réponses effrayantes --- ou, plus important encore dans un contexte Agile, de nouvelles --- réponses d'erreur.

Le fuzzing de chaque gestionnaire de requêtes dans votre application Web à chaque itération de version est la chose n ° 1 que vous pouvez faire pour améliorer la sécurité des applications sans instituer un «SDLC» formel et ajouter des effectifs. Au-delà de cela, examinez votre code pour les principaux points chauds de sécurité des applications Web:

  • Utilisez uniquement des instructions SQL préparées paramétrées; ne vous contentez jamais de concaténer des chaînes et de les transmettre à votre identifiant de base de données.

  • Filtrez toutes les entrées sur une liste blanche de bons caractères connus (alnum, ponctuation de base) et, plus important encore, filtrez les données de sortie de vos résultats de requête pour «neutraliser» les métacaractères HTML en entités HTML (quot, lt, gt, etc.).

  • Utilisez de longs identificateurs aléatoires difficiles à deviner partout où vous utilisez actuellement des ID de ligne entiers simples dans les paramètres de requête, et assurez-vous que l'utilisateur X ne peut pas voir les données de l'utilisateur Y simplement en devinant ces identificateurs.

  • Testez tous les gestionnaires de requêtes de votre application pour vous assurer qu'ils ne fonctionnent que lorsqu'un cookie de session valide et connecté est présenté.

  • Activez la protection XSRF dans votre pile Web, qui générera des paramètres de jeton de formulaire masqués sur tous vos formulaires rendus, pour empêcher les attaquants de créer des liens malveillants qui soumettront des formulaires pour des utilisateurs sans méfiance.

  • Utilisez bcrypt --- et rien d'autre --- pour stocker les mots de passe hachés.

La source
Translate

Je ne suis pas un expert en développement Agile, mais j'imagine qu'intégrer un logiciel de test de stylo automatisé de base dans votre cycle de construction serait un bon début. J'ai vu plusieurs progiciels qui feront des tests de base et sont bien adaptés à l'automatisation.

La source
Translate

Je ne suis pas un expert en sécurité, mais je pense que le fait le plus important dont vous devez être conscient, avant de tester la sécurité, est ce que vous essayez de protéger. Ce n'est que si vous savez ce que vous essayez de protéger que vous pouvez effectuer une analyse appropriée de vos mesures de sécurité et alors seulement vous pourrez commencer à tester ces mesures mises en œuvre.

Très abstrait, je sais. Cependant, je pense que cela devrait être la première étape de chaque audit de sécurité.

La source
Translate

Test unitaire, Programmation de la défenseet beaucoup de journaux

Test unitaire

Assurez-vous que vous effectuez un test unitaire le plus tôt possible (par exemple, le mot de passe doit être crypté avant l'envoi, le tunnel SSL fonctionne, etc.). Cela empêcherait vos programmeurs de rendre accidentellement le programme non sécurisé.

Programmation de la défense

J'appelle personnellement cela la programmation paranoïaque mais Wikipédia ne se trompe jamais (sarcasme). En gros, vous ajoutez des tests à vos fonctions qui vérifient toutes les entrées:

  • les cookies de l'utilisateur sont-ils valides?
  • est-il toujours connecté?
  • les paramètres de la fonction sont-ils protégés contre l'injection SQL? (même si vous savez que les entrées sont générées par vos propres fonctions, vous testerez quand même)

Enregistrement

Enregistrez tout comme un fou. Il est plus facile de supprimer les journaux que de les ajouter. Un utilisateur s'est connecté? Enregistrez-le. Un utilisateur a trouvé un 404? Enregistrez-le. L'administrateur a modifié / supprimé un message? Enregistrez-le. Quelqu'un a pu accéder à une page restreinte? Enregistrez-le.

Ne soyez pas surpris si votre fichier journal atteint plus de 15 Mo pendant votre phase de développement. Pendant la version bêta, vous pouvez décider des journaux à supprimer. Si vous le souhaitez, vous pouvez ajouter un indicateur pour décider quand un certain événement est enregistré.

La source