Exemple de liste de vérification d'acceptation de code pour les organisations informatiques

Mise à jour : 2009-02-26

Les sites Web qui reposent sur Microsoft Office SharePoint Server 2007 contiennent souvent des solutions personnalisées. La possibilité de personnaliser les sites en y ajoutant des solutions personnalisées confère à Office SharePoint Server 2007 puissance et souplesse. Toutefois, un module exécutable mal conçu ou mal implémenté qui s'exécute dans une batterie de serveurs SharePoint peut avec un impact négatif au-delà même du cadre de l'application Web pour laquelle il a été prévu. Des solutions personnalisées mal implémentées peuvent engendrer des risques en termes de sécurité ou de performances, augmenter le coût de prise en charge, compliquer le déploiement et réduire la productivité au lieu de l'accroître.

Dans la mesure où l'impact de l'installation de solutions personnalisées dans une batterie de serveurs SharePoint peut être positif ou négatif, nous vous recommandons d'évaluer avec soin toutes les solutions personnalisées avant de les déployer dans votre environnement de production. Les domaines à évaluer sont les suivants :

En plus d'exiger que la solution soit développée conformément aux méthodes conseillées générales, nous vous recommandons de demander aux développeurs de soumettre une liste de vérification permettant de vérifier que leurs solutions ont été codées et testées conformément aux méthodes conseillées.

Pour que les solutions que vous déployez offrent les avantages attendus sans exposer l'entreprise à des risques inutiles, vous pouvez utiliser l'exemple de liste de vérification d'acceptation de code suivant. Utilisez cette liste comme point de départ pour votre propre liste de vérification de la qualité des solutions soumises au déploiement. En plus d'offrir un mécanisme de vérification post-développement d'une solution, votre liste de vérification d'acceptation de code peut également constituer un bon outil de formation. En fournissant aux développeurs la liste avant qu'ils n'implémentent leurs personnalisations, vous communiquez vos attentes en termes de qualité des solutions qu'ils vont développer et soumettre.

ImportantImportant :

Cet exemple de liste de vérification est uniquement fourni à titre informatif. Ne partez pas du principe que tous les problèmes d'acceptation de code sont pris en compte par cette liste de vérification et qu'aucune mesure supplémentaire ne sera nécessaire pour votre organisation. Cette liste de vérification n'offre aucune garantie, explicite ou implicite.

Dans cet article :

Ressources pour les méthodes conseillées en matière de développement SharePoint

Cette section contient une liste de ressources, que vous pouvez fournir aux développeurs pour les aider à concevoir et à implémenter des solutions adaptées à vos besoins en termes de capacité d'utilisation, de prise en charge, de performances et de sécurité de votre informatique.

Liste de vérification d'acceptation de code

Cette section classe les listes de vérification d’acceptation de code dans les catégories suivantes : sécurité, gestion de session, validation, données sensibles, gestion des exceptions, composants WebPart, documentation, méthodes conseillées en matière de développement logiciel général. Pour une version imprimable et modifiable de la liste de vérification, voir Version imprimable de la liste de vérification d’acceptation de code (https://go.microsoft.com/fwlink/?linkid=125134&clcid=0x40C) (en anglais).

NoteRemarque :

Les listes de contrôle sont fournies dans ce document en tant qu'exemples uniquement, que vous pouvez utiliser pour développer votre propre liste de vérification d'acceptation de code en fonction des besoins propres à votre entreprise. Servez-vous-en comme d'un point de départ pour développer votre propre liste de contrôle.

Sécurité

Cette section de la liste de vérification d'acceptation de code contient les éléments suggérés pour garantir que les solutions soumises au déploiement dans un environnement SharePoint ont été développées conformément aux méthodes conseillées en matière de sécurité.

[ ]

L'application utilise une liste d'inclusion (entrée connue, valide et sans échec) plutôt qu'une liste d'exclusion (rejet des entrées malveillantes ou dangereuses connues).

[ ]

Toute entrée utilisateur est codée en IOSec lorsqu'elle est affichée aux clients.

[ ]

Le codage de caractères est défini par le serveur (ISO-8859-1 est recommandé).

[ ]

Les mots de passe en texte brut ne sont pas présents dans les fichiers Web.config, Machine.config ou tout autre fichier qui contient des paramètres de configuration. Des utilitaires, tels que Aspnet_setreg.exe, Trustee ou le paramètre d'identité utilisé dans AppPool dans IIS 6.0 ou IIS 7.0 sont utilisés pour chiffrer les informations d'identification.

[ ]

Si les cookies contiennent des données sensibles, elles sont marquées comme sécurisés.

[ ]

Les surfaces d'entrée dans les composants WebPart et autres personnalisations incluent les vérifications de limite, d'intégrité des données entrées et la gestion des exceptions appropriées afin d'empêcher les scripts intersites et l'injection SQL.

[ ]

La conception aborde les questions de canonicalisation potentiels.

[ ]

Vous évitez d'utiliser l'option AllowUnsafeUpdates. Vous utilisez la fonction ValidateFormDigest() et, si nécessaire, utilisez des privilèges élevés pour interagir avec les objets SharePoint. Dans les cas où l'option AllowUnsafeUpdates doit être utilisée, vous garantissez que AllowUnsafeUpdates est définie sur False dans votre bloc try-catch-finally, ou vous utilisez une méthode Dispose() (comme requis par l'interface IDisposable) afin d'éviter les problèmes de sécurité.

Gestion de session

Cette section de la liste de vérification d'acceptation de code contient les éléments suggérés pour garantir que les solutions soumises au déploiement dans votre environnement SharePoint ont été développées conformément aux méthodes conseillées en matière de gestion de session.

[ ]

L'état de session est fort, imprévisible et protégé contre les accès non autorisés ou les attaques de relecture.

[ ]

La durée de vie de la session est limitée à 30 minutes d'inactivité au maximum.

[ ]

Les identificateurs de session ne sont pas transmis dans l'URL et la fonctionnalité ASP.NET de session sans cookie n'est pas utilisée.

[ ]

Le service d'état de session est désactivé s'il n'est pas utilisé.

Validation

Cette section de la liste de vérification d'acceptation de code contient les éléments suggérés pour garantir que les solutions soumises au déploiement dans votre environnement SharePoint ont été développées conformément aux méthodes conseillées en matière de validation d'entrée.

[ ]

La validation d'entrée est appliquée tous les points d'entrée identifiés (y compris les champs de formulaire, les chaînes de requête, les cookies, les en-têtes HTTP et les paramètres de service Web).

[ ]

L'option ASP.NET validateRequest est activée, si cela est possible.

[ ]

Les données sont validées en termes de type, de longueur, de format et de plage.

[ ]

La sécurité ne repose pas sur la validation côté client. Elle est au contraire effectuée côté serveur.

[ ]

L'application utilise systématiquement un mécanisme de validation d'entrée standardisé tel que RegEx.

Données sensibles

Cette section de la liste de vérification d'acceptation de code contient les éléments suggérés pour garantir que les solutions soumises au déploiement dans votre environnement SharePoint ont été développées conformément aux méthodes conseillées en matière de protection des données sensibles.

[ ]

L'application n'enregistre pas en journal les données sensibles en texte clair.

[ ]

Les données sensibles ne sont pas stockées dans des cookies.

[ ]

Les données sensibles ne sont pas stockées dans des champs de formulaire non chiffrés et/ou masqués ou des chaînes de requête. Leur conservation est gérée côté serveur.

[ ]

SSL, IPSec avec chiffrage ou des méthodes de chiffrage de la couche application avant transmission sont utilisées pour protéger les données sensibles au cours de leur transmission.

[ ]

Les données sensibles ne sont pas mises en cache. La mise en cache de sortie est désactivée par défaut.

[ ]

Les données sensibles qui sont transférées par courrier électronique utilisent le chiffrage S/MIME ou la gestion des droits relatifs à l'information (IRM), selon le destinataire prévu.

Gestion des exceptions

Cette section de la liste de vérification d'acceptation de code contient les éléments suggérés pour garantir que les solutions soumises au déploiement dans votre environnement SharePoint ont été développées conformément aux méthodes conseillées en matière de gestion des exceptions.

[ ]

L'application utilise une approche standardisée systématique pour une gestion structurée des erreurs et des exceptions.

[ ]

Le code de gestion des erreurs hérite de la classe SPException pour assurer la cohérence esthétique de la prise en charge par SharePoint des erreurs.

[ ]

L'application échoue de manière sécurisée en cas d'erreur et d'exception.

[ ]

Les conditions d'exception n'autorisent pas un utilisateur à contourner les vérifications de sécurité pour exécuter du code privilégié.

[ ]

L'application renvoie des messages d'erreur personnalisés génériques au client.

[ ]

Le code utilise la gestion des exceptions. Le code intercepte uniquement les exceptions que vous connaissez. Par exemple, n'utilisez pas try{} catch(Exception ex){}, sauf si vous levez à nouveau l'erreur.

[ ]

Si le code utilise des filtres d'exception, il n'est pas critique de filtrer la séquence d'exécution (le filtre s'exécutant avant le bloc finally).

[ ]

Les erreurs d'application ne contiennent pas d'informations sensibles ou pouvant être utilisées pour exploiter la défaillance.

Composants WebPart

Cette section de la liste de vérification d'acceptation de code contient les éléments suggérés pour garantir que les solutions soumises au déploiement dans votre environnement SharePoint ont été développées conformément aux méthodes conseillées en matière de développement de composants WebPart.

[ ]

Les composants WebPart personnalisés (y compris les fichiers de ressources) sont contenus dans une fonction SharePoint et empaquetés sous forme de solution SharePoint pour être déployés.

[ ]

La configuration des composants WebPart qui sont déployés donne à l'administrateur la possibilité de déployer au niveau des applications Web ou à un niveau inférieur.

[ ]

Vous utilisez le jeu standardisé d'interfaces de connexion des composants WebPart de l'infrastructure des composants WebPart de SharePoint pour échanger des informations les uns avec les autres au moment de l'exécution.

[ ]

Le code source des solutions des composants WebPart tiers est fourni, chaque fois que cela est possible, avec la documentation appropriée dans un souci de qualité du support technique.

[ ]

Tous les composants WebPart personnalisés utilisent l'architecture SharePoint pour assurer un comportement cohérent à l'échelle de l'application en ce qui concerne des fonctionnalités telles que le service d'authentification unique, le déploiement de fonctionnalités, etc.

Documentation

Exigez une documentation permettant de garantir que les personnalisations que l'on vous demande de déployer peuvent sont être installées, prises en charge et intégralement testées. En outre, la documentation indique que toutes les erreurs qui sont générées par les personnalisations sont correctement décrites et diagnostiquées. Cette section de la liste de vérification d'acceptation de code contient des suggestions susceptibles de garantir que les solutions qui sont soumises au déploiement dans votre environnement SharePoint ont été développées à l'aide les méthodes conseillées pour la documentation.

[ ]

Les personnalisations sont accompagnées par des instructions d'installation qui expliquent en détail comment installer et désinstaller le package. Les diagrammes d'architecture qui sont liés à l'installation de la solution sont inclus. S'il n'est pas possible d'annuler une solution, cela doit être expliqué dans les instructions d'installation de sorte que vous puissiez discuter des risques et préparer un plan de récupération du système.

[ ]

Les personnalisations sont accompagnées par les documents de test et les résultats.

[ ]

Les personnalisations sont accompagnées de la liste de toutes les dépendances. Il peut s'agir de comptes/mots de passe, de services Web, de bases de données, d'autres solutions ou fonctionnalités, de correctifs logiciels, de jeux ou de bibliothèques d'outils et d'autres dépendances.

[ ]

Une liste de toutes les entrées d'événement qui sont générées par les personnalisations et les actions à effectuer sont fournies. Cela peut prendre la forme d'une table de codes d'erreur, où la cause la gravité et la cause de chaque code est fournie.

[ ]

Facultativement, le code source est fourni pour faciliter la validation et le test par le département informatique.

[ ]

Les personnalisations qui procèdent de la mise à niveau de personnalisations précédemment déployées sont accompagnées d'une documentation décrivant les modifications, les points à prendre en compte pour la mise à niveau des personnalisations, et des instructions de restauration.

Méthodes conseillées de développement logiciel général

Cette section de la liste de vérification d'acceptation de code contient les éléments suggérés pour garantir que les solutions soumises au déploiement dans votre environnement SharePoint ont été développées conformément aux méthodes conseillées en matière de développement de logiciel.

[ ]

Les assemblys ont un nom fort. (Les assemblys de page Web ASP.NET générés de façon dynamique ne peuvent actuellement pas avoir de nom fort.)

[ ]

Vous utilisez la signature différée comme moyen de protection et de restriction de la clé privée qui est utilisée dans le nom fort et dans le processus de signature.

[ ]

Les assemblys incluent des attributs de sécurité déclaratifs (avec SecurityAction.RequestMinimum) pour spécifier les règles d'autorisation minimales.

[ ]

Les assemblys à privilèges élevés sont séparés des assemblys à privilèges moindres.

[ ]

Si un assembly doit être utilisé dans un environnement de confiance partielle (par exemple, lorsqu'il est appelé depuis une application Web de confiance partielle), le code privilégié est dans un assembly séparé.

[ ]

Vous vous appuyez sur un fichier de configuration natif pour prendre en charge l'application au lieu de modifier la configuration dans le fichier web.config.

[ ]

Vous utilisez .NET Framework version 2.0, 3.0 ou 3.5.

[ ]

Vous utilisez une version unique du .NET Framework. Vous ne mélangez pas plusieurs versions.

[ ]

Votre code est compatible 64 bits.

[ ]

Votre application n'essaie pas d'accéder directement aux bases de données SharePoint. Les magasins de données des bases de données SharePoint ne sont mis à jour qu'à l'aide du modèle d'objet SharePoint.

[ ]

Vous évitez de coder en dur les chaînes et les étiquettes. À la place, vous utilisez des ressources ou des fichiers de langue.

[ ]

Lorsque vous faites référence aux objets SPWeb ou SPSite, vous employez une instruction using mais vous pouvez également utiliser un appel explicite de la méthode .Dispose afin de garantir l'utilisation et l'élimination appropriée des objets de mémoire.

[ ]

Vous utilisez la mise en cache selon les circonstances pour réduire les aller-retour inutiles. Pour les composants WebPart, vous exposez l'expiration (durée) du cache en tant que propriété du composant WebPart.

[ ]

En empaquetant votre solution, vous incluez une stratégie de sécurité d'accès au code pour la solution et, si nécessaire, ajoutez votre assembly à la liste des contrôles fiables via la solution.

[ ]

Lors de l'enregistrement du code, vous utilisez la classe Journal du portail pour enregistrer les journaux ULS (service de journalisation unifiée) de SharePoint.

[ ]

Si vous devez mettre à jour plusieurs éléments de liste à l'aide de code à distance, vous utilisez le service Web pour mettre à jour les éléments de liste. Vous n'utilisez SPListItem.Update() que si vous devez mettre à jour plusieurs éléments à la fois à l'aide du code OM local.

[ ]

Lorsque vous utilisez la propriété Count d'une SPListItemCollection, vous ne l'appelez qu'une seule fois, puis la stockez dans une variable à laquelle vous pouvez faire référence lorsque vous effectuez une boucle. Vous ne l'appelez pas à l'intérieur d'une boucle.

[ ]

La solution utilise l'objet AppSettings pour implémenter le mappage XML. (Cela peut être fourni par l'infrastructure de persistance des paramètres dans .NET 2.0, 3.0 ou 3.5.) La solution évite de créer des fichiers XML personnalisés et un objet fortement typé pour le mappage XML.

[ ]

La journalisation de l’installation et du déploiement est fournie dans les journaux des événements afin de permettre une résolution opérationnelle appropriée des problèmes lors de l'installation et de la désinstallation.

Télécharger ce livre

Cette rubrique est incluse dans le livre à télécharger suivant pour une lecture et une impression plus faciles :

Vous trouverez la liste complète des livres disponibles sur Contenu téléchargeable pour Office SharePoint Server 2007.