-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTask3
More file actions
141 lines (101 loc) · 6.3 KB
/
Copy pathTask3
File metadata and controls
141 lines (101 loc) · 6.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
Rapport Complet d’Audit de Sécurité et Qualité du Code
1. Contexte
Projet : Application mobile multiplateforme — gestion et interaction utilisateur
Langage : JavaScript / TypeScript (framework mobile hybride)
Outils utilisés pour l’audit : ESLint (analyse statique), règles de sécurité (security/detect-object-injection), validation PropTypes, règles lint React Hooks
Objectifs : Identifier vulnérabilités, erreurs, et mauvaises pratiques, fournir des recommandations pour un code plus sécurisé, maintenable et robuste.
2. Méthodologie
Exécution d’ESLint sur l’ensemble du code source pour détecter erreurs et avertissements.
Catégorisation des problèmes en erreurs critiques, vulnérabilités de sécurité, et bonnes pratiques non respectées.
Analyse manuelle des causes et impacts.
Propositions de recommandations ciblées par catégorie.
Priorisation des corrections à effectuer.
3. Résultats détaillés
3.1 Erreurs critiques et blocages
Description Impact Exemples / Modules Lignes majeures
Import non résolu Modules manquants bloquant la build/exécution module-navigation, ui-blur, icon-pack NavigationTab.tsx(1), SymbolIcon.tsx(4,40)
Propriétés React non validées Risque d’erreurs à l’exécution, code difficile à maintenir ButtonComponent.js, FormAdd.js, DashboardMain.js 4, 18, 411
Variables non définies Crash potentiel, bugs cachés StockageAsynchrone non importé dans AuthScreen.js 82, 83, 92, 93
Blocs vides Code incomplet, erreurs logiques MapViewContainer.js 107
3.2 Vulnérabilités de sécurité détectées
Type d’alerte Description Modules concernés Lignes clés
Injection d’objet générique Accès dynamique non sécurisé pouvant entraîner injection malveillante ScrollViewCustom.tsx, SymbolIcon.tsx, ReportModule.js 40, 57, 533, 596
Accès système de fichiers non sécurisé Usage de fs.existsSync et fs.rename avec chemins dynamiques resetUtility.js 59, 62
3.3 Avertissements qualité / bonnes pratiques
Description Impact potentiel Modules concernés Lignes clés
Caractères JSX non échappés Risques mineurs d’affichage ou XSS Plusieurs modules UI 57, 70, 411, 489
Hooks React avec dépendances manquantes Bugs dans l’exécution des effets MainScreen.js, ReportModule.js, SlotHandler.js 74, 79, 159, 163
Variables non utilisées Code inutile, complexité inutile SlotHandler.js, ReportModule.js 28, 46, 86, 111
4. Analyse détaillée et recommandations
4.1 Gestion des dépendances et imports
Problème : Modules comme module-navigation, ui-blur, icon-pack non trouvés à l’exécution.
Cause : Versions incompatibles, absence d’installation, conflits de version.
Solution :
Vérifier compatibilité des versions des modules clés.
Utiliser npm install --legacy-peer-deps en cas de conflits.
Installer explicitement ui-blur et icon-pack via le gestionnaire de paquets adapté.
Vérifier les chemins d’import et relancer le bundler.
4.2 Validation des propriétés React (PropTypes)
Problème : Absence de validation des propriétés dans de nombreux composants.
Impact : Difficulté à détecter les erreurs d’utilisation des composants, bugs runtime.
Solution :
Ajouter PropTypes ou interfaces TypeScript pour chaque composant.
Exemple minimal :
js
Copier
Modifier
import PropTypes from 'prop-types';
function ButtonComponent({ label, onClick, style }) {
// Composant
}
ButtonComponent.propTypes = {
label: PropTypes.string.isRequired,
onClick: PropTypes.func.isRequired,
style: PropTypes.object,
};
Corriger tous les composants listés.
4.3 Sécurisation des accès dynamiques (objets et fichiers)
Problème : Usage d’indexation dynamique sur objets sans validation (ex : obj[key]).
Impact : Exécution de code malveillant, corruption de données, vulnérabilité critique.
Solution :
Valider strictement les clés utilisées (liste blanche).
Utiliser des fonctions sécurisées pour accéder aux données.
Ajouter des contrôles côté backend si applicable.
Pour accès fichier, éviter chemins dynamiques non validés ; privilégier chemins absolus ou validés.
4.4 Hooks React (useEffect, useCallback)
Problème : Manque de dépendances dans les hooks, pouvant entraîner des effets non mis à jour.
Impact : Bugs subtils liés à la non exécution ou mauvaise exécution des effets.
Solution :
Toujours déclarer toutes les dépendances utilisées dans le tableau des dépendances.
Utiliser le plugin ESLint dédié aux hooks React pour détecter les oublis.
Exemple :
js
Copier
Modifier
useEffect(() => {
fetchData();
}, [fetchData]); // fetchData doit être stable (useCallback)
4.5 Correction des variables non utilisées et blocs vides
Problème : Variables déclarées mais jamais utilisées, blocs vides.
Impact : Pollution du code, confusion, oubli possible de logique importante.
Solution :
Supprimer variables inutilisées.
Compléter ou supprimer blocs vides.
Ajouter commentaires TODO si nécessaire.
4.6 Échappement des caractères dans JSX
Problème : Caractères spéciaux (apostrophes, guillemets) non échappés dans JSX causant erreurs ou bugs d’affichage.
Solution :
Utiliser entités HTML (', ') ou échappement via backslash (\').
Corriger tous les fichiers affectés.
5. Plan d’action proposé
Priorité Tâche Description Responsable / Note
Haute Synchronisation & installation Mettre à jour modules critiques, gérer conflits npm Équipe frontend
Haute Correction des imports Résoudre erreurs import/no-unresolved Équipe frontend
Haute Validation des props Ajouter PropTypes / types partout Équipe frontend
Haute Sécurisation des accès dynamiques Validation des clés, sécurisation des accès objets et fichiers Équipes backend & frontend
Moyenne Correction des hooks React Compléter dépendances et usages Équipe frontend
Moyenne Nettoyage du code Supprimer variables inutilisées, blocs vides Équipe frontend
Moyenne Échappement caractères JSX Corriger tous les caractères spéciaux Équipe frontend
Moyenne Formation équipe Sensibilisation aux bonnes pratiques React et sécurité Lead technique
6. Conclusion
Cet audit met en lumière plusieurs problèmes techniques et vulnérabilités critiques qui, s’ils ne sont pas corrigés, pourraient entraîner des bugs majeurs, des failles de sécurité exploitables et une maintenance coûteuse. En suivant ce plan structuré, l’application gagnera en robustesse, sécurité et qualité globale.