Maison >Java >javaDidacticiel >Vous expliquer comment assurer la sécurité des applications Web

Vous expliquer comment assurer la sécurité des applications Web

怪我咯
怪我咯original
2017-06-25 10:19:052641parcourir

Les applications Web sont aujourd'hui à l'avant-garde de la plupart des applications d'entreprise. Les applications Web peuvent remplir de nombreuses fonctions différentes dans une architecture hybride complexe. Il propose des applications allant des solutions orientées services fonctionnant sur les dernières technologies cloud, aux anciennes applications Web multiniveaux, en passant par les portails Web qui permettent aux clients d'accéder aux applications existantes sur les mainframes.

La gestion des risques associés à ces applications web complexes est une exigence inévitable pour les entreprises, et la sécurité du code sous-jacent exécutant ces applications web affecte directement le profil de risque des données disponibles pour les applications de l'entreprise. Malheureusement, développer des pratiques de sécurité reproductibles et efficaces pour les applications Web n’est pas une tâche simple. De nombreuses organisations tentent d'utiliser des solutions de post-production pour fournir des contrôles de sécurité, tels que des pare-feu d'applications Web et des systèmes de prévention des intrusions.

Mais attendre la phase de production du cycle de vie pour déployer des mécanismes de sécurité est un peu trop tard et son efficacité est trop faible. Les problèmes de conception ou d’architecture sont plus faciles à résoudre au début du cycle de vie que d’attendre que l’application soit en production, ce qui peut s’avérer extrêmement coûteux. Les vulnérabilités de sécurité dans les applications Web peuvent entraîner des fuites de données, des violations des politiques, et les correctifs post-déploiement ou la correction complète du code peuvent augmenter considérablement le coût global.

Pour garantir l'efficacité et l'efficience, la sécurité des applications web doit commencer dès la phase de définition des exigences jusqu'à la phase d'acceptation finale. Cette approche nécessite que tous les concepteurs soient capables de travailler ensemble en équipe tout au long du processus. Pendant les phases telles que la mise en œuvre et les tests, l'utilisation d'outils automatisés qui suivent une stratégie peut prendre en charge des tests reproductibles et conduire à des cycles de développement plus rapides à mesure que le processus de test est standardisé.

Construire la sécurité dès les premières étapes du processus de développement ne doit pas nécessairement être compliqué. La mise en œuvre de contrôles et de contrepoids de sécurité tout au long du cycle de développement permet des cycles de publication plus rapides et peut réduire considérablement les vulnérabilités des applications Web.

Le coût élevé de la mise en œuvre des tests de sécurité à la fin du cycle de développement

L'intégration de points de contrôle de sécurité dans le processus de développement peut en effet réduire le délai de livraison global. Cela peut sembler contre-intuitif, mais les coûts associés à la correction des erreurs de conception et des erreurs de codage après le déploiement d’une application Web en production sont extrêmement élevés.

Par exemple, dans de nombreux environnements de développement, les experts en sécurité et en audit ont tendance à apparaître à la fin du cycle de développement. À ce stade, la demande est complète et tout retard est considéré comme un goulot d’étranglement inutile. La pression intense exercée par les entreprises pour déployer rapidement des produits logiciels signifie que les contrôles de sécurité peuvent être négligés, ce qui a pour conséquence que les applications Web ne sont pas soumises à un examen de sécurité approprié. Dans cet environnement extrêmement sensible au facteur temps, même si un outil d’analyse signale un grand nombre de vulnérabilités sans validation ni priorisation, une telle analyse peut faire plus de mal que de bien.

Mener des audits de sécurité tard dans le processus de développement, plutôt que de manière collaborative tout au long du cycle de développement, peut entraîner des retards dans les délais de publication, surtout si des bogues graves sont découverts. Le coût de la correction des erreurs de conception et de codage plus tard dans le cycle de développement est bien plus élevé que le coût de leur détection précoce. Une étude de la National Science Foundation estime que si de graves problèmes logiciels sont découverts et corrigés pendant les étapes d'exigence et de conception, le coût est environ 100 fois inférieur à celui si le problème est découvert après la mise en production du logiciel.

Lors de l'intégration de la sécurité dans une application Web, dans la plupart des cas, l'objectif n'est pas de créer une application Web impénétrable ou d'éliminer toutes les vulnérabilités possibles. L’objectif devrait plutôt être de faire correspondre les caractéristiques requises avec le profil de risque accepté pour l’application Web. Tout au long du cycle de développement d'une application Web, l'objectif doit être d'atteindre l'assurance logicielle, c'est-à-dire un niveau de fonctionnalité et de sensibilité approprié à l'application Web spécifique qui fournit une assurance raisonnable que le logiciel continuera à atteindre les caractéristiques requises, même si le logiciel peut donc être attaqué.

Avantages d'une approche intégrée

Lorsque des développeurs de différents groupes travaillent ensemble en équipe, cela crée une grande efficacité dans le processus de développement d'applications Web. Même si les professionnels de la sécurité déplorent souvent que les chefs d'entreprise ne comprennent tout simplement pas les risques liés aux logiciels, il est également important qu'ils soient familiarisés avec les risques commerciaux. La création d'applications Web avec des niveaux d'assurance logicielle appropriés nécessite des compromis en matière de gestion des risques entre les besoins de l'entreprise, la disponibilité et la sécurité. Pour parvenir au bon équilibre, les besoins de tous les développeurs doivent être rassemblés.

Dès le début du développement logiciel, la définition des exigences et la conception des applications doivent prendre en compte les exigences de sécurité ainsi que les exigences fonctionnelles et les besoins de l'entreprise. Ces informations doivent être communiquées aux concepteurs et aux développeurs de logiciels avant d'écrire du code. Cette approche peut prévenir la plupart ou la totalité des vulnérabilités de conception de sécurité et des vulnérabilités architecturales.

Cependant, la conception logicielle axée sur la sécurité n'exclut pas toutes les vulnérabilités associées aux applications Web. Les développeurs eux-mêmes doivent être formés aux techniques de codage sécurisé pour garantir que des failles de sécurité ne soient pas introduites lors de la conception des applications. Donner aux développeurs un aperçu du langage de développement et de l'environnement d'exécution de manière sécurisée peut prendre en charge de meilleures pratiques de codage et permettre à l'application Web finale d'être moins boguée. Un autre avantage en termes d'efficacité de l'intégration de la sécurité dans le processus de conception est la possibilité d'établir des scénarios d'utilisation abusive lors des exigences et de la conception. Faire cela pendant les phases de test et de réception permet de gagner du temps et d’éliminer les goulots d’étranglement.

Les avantages des tests synthétiques intégrés

La méthode d'analyse synthétique intégrée des tests logiciels peut grandement améliorer l'efficacité. Des plug-ins spécifiques pour les environnements de développement intégrés avertissent les codeurs lorsqu'ils détectent des erreurs de codage dans le code de l'utilisateur. L'analyse statique, également connue sous le nom de test « boîte blanche », est une technique utilisée par les développeurs et les auditeurs sur différents modules avant leur assemblage dans un produit final. L'analyse statique fournit un aperçu d'une application au niveau du code. L'analyse statique est efficace pour détecter les erreurs de syntaxe et les failles au niveau du code, mais elle ne convient pas pour déterminer si une faille entraîne une vulnérabilité exploitable.

L'analyse dynamique et les tests d'intrusion manuels sont efficaces pour vérifier si une application est vulnérable aux attaques. Il est également appelé « test boîte noire ». Il montre principalement l'inspection et l'analyse de l'application par des tiers. Il peut effectuer une inspection approfondie de l'application mise en production pour voir s'il est facile pour les attaquants d'exploiter ses vulnérabilités. Cependant, les techniques de tests dynamiques ne peuvent être utilisées que dans les étapes ultérieures du développement logiciel, uniquement dans la phase de post-génération. Une autre limite des tests dynamiques est qu’il peut être difficile de trouver la source du code à l’origine de la vulnérabilité.

C'est pourquoi il est important de combiner les tests statiques et dynamiques dans une « boîte grise » ou une approche combinée des tests hybrides. En combinant les résultats des inspections internes au niveau du code avec des inspections externes dynamiques, vous pouvez tirer parti du meilleur des deux technologies. L'utilisation d'outils d'évaluation statiques et dynamiques permet aux gestionnaires et aux développeurs de hiérarchiser les applications, les modules et les vulnérabilités et de résoudre en premier les problèmes ayant le plus grand impact. Un autre avantage de l'approche d'analyse combinée est que les vulnérabilités identifiées par les tests dynamiques peuvent être retracées jusqu'à des lignes ou des blocs de code spécifiques à l'aide d'outils statiques. Cela facilite la communication collaborative entre les équipes de test et de développement et permet aux experts en sécurité et en tests de fournir plus facilement aux développeurs des conseils spécifiques et exploitables pour corriger les problèmes.

Intégrer la sécurité dans le cycle de vie des logiciels : méthodes pratiques

Construire la sécurité nécessite des personnes, des processus, des technologies et des méthodes. Bien qu'il existe de nombreux outils qui peuvent aider à automatiser le processus de renforcement de la sécurité des applications Web, aucun outil ne sera vraiment efficace sans les processus appropriés et le personnel formé pour créer et tester des applications Web.

Ce processus devrait inclure un cycle formel de développement logiciel et une stratégie publiée. De plus, il est important d’établir des rôles pour tous les promoteurs et d’attribuer des responsabilités d’inspection et de supervision. La sécurité et les affaires doivent être représentées à chaque étape du cycle de développement logiciel afin que la gestion des risques puisse être abordée à chaque étape.

Tout au long du cycle de développement logiciel, un thème bénéfique et éternel est l'éducation. La formation est importante pour les développeurs et profite à toutes les personnes impliquées dans le développement d’applications Web. Parce que la sensibilisation à la sécurité doit être à la fois descendante et ascendante. Ne sous-estimez pas l’importance de former les managers sur l’impact des vulnérabilités des applications Web sur l’entreprise. Dire à un dirigeant qu'une application Web est vulnérable à la falsification de requêtes inter-sites (CSRF) peut prêter à confusion, mais lui montrer comment un bug logiciel peut conduire à l'exposition des données client peut l'aider à prendre conscience des conséquences réelles de cette insécurité. applications Web. Des cas et des mesures spécifiques doivent être préparés pour illustrer les diverses économies potentielles. Par exemple, démontrer qu'investir dans la formation des développeurs et dans les plug-ins d'analyse statique pour les IDE peut prévenir les sources de violations de données dans les applications logicielles avant qu'elles n'inspectent leur code.

Les auditeurs et les évaluateurs peuvent en apprendre davantage sur les erreurs de codage courantes, évaluer leurs conséquences et interagir avec « l'écosystème » de l'application Web (y compris les systèmes de support back-end, les contrôles de sécurité existants et tout ce qui fait partie de l'application Web. environnement). Les testeurs et les spécialistes de l'évaluation de la qualité doivent être familiers avec les scénarios d'utilisation abusive et en quoi ils diffèrent des applications de la norme. Ils doivent également savoir comment interpréter les résultats des tests de sécurité et être capables de hiérarchiser les résultats selon les besoins.

Concentrez-vous sur les étapes spécifiques du cycle de développement logiciel où il existe des opportunités pour accroître l'efficacité tout en mettant en œuvre la sécurité et la gestion des risques.

Exigences

Les concepteurs d'applications Web sont très familiers avec la définition des exigences fonctionnelles et commerciales, mais ils peuvent ne pas comprendre comment définir les exigences de sécurité. À ce stade, toute l’équipe doit travailler ensemble pour décider quels contrôles de sécurité sont essentiels à l’application Web finale.

Étapes pour intégrer la sécurité dans la phase des exigences

 1. Discutez et définissez les exigences de sécurité en fonction de la politique de l'entreprise, de la conformité et des exigences réglementaires.

2. Les équipes de sécurité et d'audit doivent évaluer les exigences commerciales et les fonctionnalités de l'application Web et commencer à développer des cas d'utilisation abusive (scénarios d'utilisation abusive) pendant les tests et l'acceptation.

Les avantages sont doubles. L'un est d'éliminer ou de réduire les problèmes de sécurité ou de violation à l'avance, et l'autre est de réduire le temps de déploiement.

Architecture et conception

Maintenant que l'architecture et la conception de l'application Web ont été définies, l'étape suivante consiste à évaluer les problèmes de sécurité. C’est au cours de cette phase que les problèmes de sécurité coûteux et difficiles à résoudre peuvent être résolus au moment où ils sont le plus faciles à résoudre. Pour éviter des erreurs coûteuses, l'architecture du programme doit être évaluée du point de vue des performances et de la sécurité. Des spécifications de conception détaillées sont compilées pour montrer aux développeurs quels contrôles de sécurité doivent être inclus et comment les composants de l'application interagissent avec l'application Web complète.

Étapes pour intégrer la sécurité dans les phases d'architecture et de conception

1. Effectuer une évaluation des risques de l'architecture et de l'environnement de déploiement proposés pour déterminer si la conception présente des risques.

 2. Évaluez les implications et les risques de sécurité lorsque l'application interagit avec le système d'origine, ainsi que les problèmes de sécurité du flux de données entre différents composants, couches ou systèmes.

3. Commentez tout problème d'exposition spécifique qui doit être résolu pendant la phase de mise en œuvre ou de déploiement (c'est-à-dire les vulnérabilités qui dépendent de la manière et de l'endroit où l'application est déployée).

4. Tenez compte des dépendances et des vulnérabilités causées par les interactions avec les mashups, la SOA et les services partenaires. Livrer la conception finale à la sécurité et à l'audit pour identifier les plans de tests de sécurité et les scénarios d'utilisation abusive.

Ses avantages se reflètent dans cinq aspects :

1. Le processus d'analyse de l'évaluation des risques et le modèle d'évaluation des risques réutilisable peuvent être soigneusement coordonnés.

 2. Les risques posés par l'environnement architectural ou l'environnement de déploiement peuvent être identifiés à un stade précoce.

 3. Les cas d'utilisation abusive réutilisables peuvent permettre de gagner du temps pendant la phase de test.

 4. Réduisez les vulnérabilités de conception spécifiques.

 5. Si nécessaire, les contraintes architecturales qui entraînent des risques peuvent être ajustées ou modifiées. Si les risques ne peuvent pas être complètement éliminés, des contrôles compensatoires peuvent également être utilisés pour définir des stratégies d'atténuation des risques.

Exécution et compilation du code

Lorsque les développeurs commencent à écrire du code, ils doivent disposer d'un ensemble complet de conceptions d'évaluation des risques et de directives claires pour les contrôles de sécurité, ou les utiliser via un service de contrôle de sécurité approuvé. Les outils de code statique automatisés intégrés aux IDE peuvent fournir aux développeurs des inspections et des conseils lors de l'écriture du code. Des outils automatisés peuvent également être utilisés pour vérifier le code et détecter les violations par rapport aux modèles de stratégie lors de la compilation et fournir un aperçu des problèmes de sécurité au niveau du code.

Étapes pour intégrer la sécurité dans les phases d'exécution et de compilation du code

1. Installer un outil d'inspection de code source statique pouvant être intégré à l'environnement de développement intégré.

 2. En option, les développeurs peuvent utiliser des outils de codage autonomes pour effectuer des révisions automatisées du code avant de livrer le code.

 3. L'équipe de sécurité et d'audit vérifie de manière aléatoire les modules de code pour voir s'ils sont conformes aux exigences de conformité et utilise des inspections de code automatisées ou manuelles pour vérifier les risques de sécurité avant la compilation.

 4. Pendant le processus de compilation, effectuez une analyse automatisée du code statique pour détecter les problèmes de sécurité et la conformité aux politiques.

 5. Utilisez des outils pour suivre les erreurs de codage des développeurs et fournir des commentaires explicatifs et des raisons pour les risques de sécurité qu'elles posent.

 Cela apportera les avantages suivants :

 1. Un code plus propre ou moins bogué peut être soumis à des évaluateurs de qualité.

 2. Au fil du temps, les développeurs peuvent améliorer leurs capacités de codage sécurisé.

 3. Les stratégies réutilisables peuvent améliorer la précision de l’analyse des risques.

 4. Moins d'erreurs de codage ou de vulnérabilités sont découvertes pendant la phase de test, ce qui entraîne un cycle de développement plus court.

Évaluation/test de qualité

Les outils de sécurité spécifiques pour tester les applications vont des solutions et services autonomes capables d'évaluer des applications complètes aux suites entièrement intégrées. Cette suite fournit des tests et une prise en charge pour plusieurs étapes, de l'éducation. à la mise en œuvre. Les solutions intégrées fournissent un support en plusieurs phases aux entreprises qui ont fait preuve de maturité dans les cycles reproductibles de sécurité des applications Web. Les suites intégrées peuvent être mises en œuvre à plusieurs moments du processus et fournissent des mesures et des commentaires pour une amélioration continue.

Alors, quelles mesures faut-il prendre pour intégrer la sécurité et améliorer la sécurité pendant la phase d'évaluation et de test de la qualité

1. Se concentrer sur la découverte des problèmes les plus importants avec certaines ressources ?

2. Validez ces résultats de tests dans une architecture d'application qui inclut les contrôles de remédiation existants (tels que les pare-feu et les IPS).

 3. Hiérarchisez les vulnérabilités découvertes en fonction des besoins de sécurité et de l'entreprise.

 4. Proposer des réparations pour les lignes de code ou les API, services, bibliothèques, etc. dont ils dépendent.

Les avantages sont également évidents : 1. Les développeurs d'applications peuvent mieux communiquer entre eux. 2. Il y a moins de plausibilité. 3. Cycle de réparation plus rapide.

Déploiement/Mise en service

La sécurité des applications Web ne s'arrête pas à l'étape de déploiement de l'application. Une fois qu'une application Web est en production, des tests et une surveillance supplémentaires doivent être mis en œuvre pour garantir la protection des données et des services. La surveillance automatisée de la sécurité des applications Web réelles garantit que l'application fonctionne comme prévu et ne divulgue pas d'informations susceptibles de présenter un risque. La surveillance peut être effectuée en interne ou sous-traitée à un fournisseur externe capable de surveiller les applications 24 heures sur 24.

Étapes pour intégrer et améliorer la sécurité pendant les phases de déploiement et de production :

1. Surveiller les utilisations abusives, dont le but est d'identifier les soi-disant "vulnérabilités inexploitables" lors des tests. ne doit pas être utilisé après sa mise en production.

 2. Surveillez les fuites de données pour trouver tous les endroits où elles ont été mal utilisées, envoyées ou stockées.

 3. Comparez l'évaluation des risques avant le déploiement avec la portée de l'exposition post-production et fournissez des commentaires à l'équipe de test.

 4. Mettez en œuvre des pare-feu d'application Web, des IPS ou d'autres mesures correctives pour atténuer l'exposition avant que le code ne soit corrigé ou pour vous conformer aux nouvelles réglementations de sécurité.

Les avantages sont les suivants :

1. Améliorer la base de connaissances des exploits qui peuvent être implémentés avec succès, améliorant ainsi l'efficacité de l'analyse lors des tests statiques et dynamiques.

 2. Découvrez et prévenez les utilisations abusives des applications.

 3. Réaliser une meilleure intégration entre les tests dynamiques et les contrôles d'application en production (tels que le pare-feu d'application Web ou IPS).

 4. Répondez aux besoins de conformité avant de réécrire du code.

 5. Utilisez des mécanismes de feedback pour parvenir à une amélioration continue.

Résumé

Sécuriser les applications web ne signifie pas forcément allonger le cycle de développement. Avec une bonne formation pour tous les développeurs et un processus de création clair et reproductible, les organisations peuvent intégrer la sécurité et les risques dans le processus de développement de manière efficace et collaborative.

L'intégration de la sécurité dans le cycle de livraison des applications Web nécessite une approche collaborative qui intègre les personnes, les processus et la technologie. Même si les outils et suites de sécurité des applications Web peuvent contribuer à améliorer le processus, ils ne constituent pas une panacée. Pour en tirer le meilleur parti, vous devez envisager de choisir un fournisseur d'outils de sécurité d'applications Web qui comprend le cycle de développement complet et dispose d'outils pouvant fournir une assistance à plusieurs étapes du processus de développement.


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn