65
1/66 • Drupal : worst current practice • © OSInet Drupal : Best Worst current practice Par Frédéric G. Marand

Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7

  • Upload
    osinet

  • View
    429

  • Download
    14

Embed Size (px)

DESCRIPTION

En 3 ans d'audit de sites Drupal 7 pour identifier des problèmes de performance, qualité, ou sécurité OSInet a identifié les causes d'erreurs les plus fréquentes : en règle général, chaque site audit présente au moins l'une d'entre elles. Votre site est-il affecté par ces erreurs ?

Citation preview

Page 1: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7

1/66 • Drupal : worst current practice • © OSInet

Drupal  : Best Worst current practice

Par Frédéric G. Marand

Page 2: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7

2/66 • Drupal : worst current practice • © OSInet

Drupagora

Paris le 14 novembre 2014

Page 3: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7

3/66 • Drupal : worst current practice • © OSInet

DRUPAGEDDON

Page 4: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7

5/66 • Drupal : worst current practice • © OSInet

CAS D'ÉCOLE  : DRUPAGEDDON

LES DONNÉES

https://www.drupal.org/SA-CORE-2014-005

https://www.drupal.org/PSA-2014-003

EN PRODUCTION : un site qui ne suit pas les bonnes pratiques ades difficultés à appliquer la MàJ rapidement• Combien de minutes avant de déployer sur votre site ?• Pourquoi si longtemps ?• Comment améliorer ?• Comment gérer les suites  ?

Introduction

Page 5: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7

6/66 • Drupal : worst current practice • © OSInet

OSInet,UN REGARD SPÉCIFIQUE DANS

L’ÉCOSYSTÈME DRUPAL

Page 6: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7

7/66 • Drupal : worst current practice • © OSInet

CONTRIBUTEURS AUX PROJETS LIBRES

OSInet• Contributeurs Drupal depuis

2005 • 100 % de l’effectif est

contributeur Drupal core 8 • Autres contributions depuis 94 :

Apache, Beego, Doctrine ODM,FirebirdSQL, MongoDB,Monolog, Samba, Silex…

Frédéric G. Marand• (Co-)auteur et (co-)correcteur

de plusieurs Security Advisories Drupal

• Mainteneur Drupal 7 core XML-RPC

• Mainteneur des contribs(References…)

http://www.osinet.fr

http://bit.ly/drupalosinet

@OSInet

http://drupal/u/fgm

Introduction

Page 7: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7

8/66 • Drupal : worst current practice • © OSInet

ACTIVITÉ

AUDIT CONSEIL

ARCHITECTURELEAD DÉV

Introduction

Page 8: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7

9/66 • Drupal : worst current practice • © OSInet

L’AUDIT TECHNIQUE DRUPAL

Problèmes récurrents motivant les audits  :• Délais• Performance• Sécurité (réponse aux pénétrations)

Les principales erreurs se répètent par ignorance :évitez-les

Introduction

Page 9: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7

11/66 • Drupal : worst current practice • © OSInet

Quand les erreurs sont-ellesconstatées ?

• Durant l’acquisition• Durant la réalisation• Durant le fonctionnement

• Lors des visites anonymes

• Lors de l'utilisation en connecté

• Lors des opérations d'exploitation

Introduction

Page 10: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7

12/66 • Drupal : worst current practice • © OSInet

Quelles sont les erreurs les plusfréquentes ?

• Délais (coûts) excessifs de réalisation• Régressions durant le développement de code• Coûts excessifs en infrastructure• Failles XSS et autres• Performance front insuffisante• Performance back insuffisante

Introduction

Page 11: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7

13/66 • Drupal : worst current practice • © OSInet

Qui est source d’erreurs ?

• L’agence réalisatrice : mauvaises techniques de réalisation• Le studio graphique : maquettes ignorant les spécificités de

build Drupal• L’hébergeur : ignorance des contraintes spécifiques de

Drupal• La communauté Drupal et Open Source en général : peu de

modules / thèmes (aucun ?) ont le même niveau d’exigencequalité que Drupal core

• Le donneur d’ordres : analyse insuffisante des besoins,exigences inappropriées

Introduction

Page 12: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7

15/66 • Drupal : worst current practice • © OSInet

BUY

Page 13: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7

16/66 • Drupal : worst current practice • © OSInet

Propriété intellectuelle

Bloquer sur cession de propriété vs concession de licence

• Définition du besoin• Certification de conformité (compliance)

Ignorer l’impact de la viralité de la GPL sur les projetsDrupal• Code source PHP, JS• Assets graphiques• Contenus• Look-and-feel

PS I am nota lawyer.

Achat

Page 14: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7

17/66 • Drupal : worst current practice • © OSInet

Le cas des appels d’offres publics

Achat

• Difficulté à déclarer un marché infructueux mêmequand il devrait l’être

• Ne pas être à jour sur le CCAG-PI / CCAG-TIC etles circulaires associées

• Définition de l’objet du marché  : site vs logiciel• Procédures de recette  : spécification vs agilité

Page 15: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7

18/66 • Drupal : worst current practice • © OSInet

Choix des prestataires : principauxproblèmes

Agences de communicationtraditionnelles➔ Pas assez techniques pour

les projets importants

SSII (ESN) / SSLL (ENL)traditionnelles➔ Pas assez créatives pour

les projets importants

Spécialistes AMOA➔ Retour sur coût difficile à

évaluer avant un premieréchec

Drupalshops➔ Pas assez disponibles,

problèmes d’agrémentdans les grands comptes,pas assez deconnaissances autres

Achat

Page 16: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7

19/66 • Drupal : worst current practice • © OSInet

BUILD

Page 17: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7

20/66 • Drupal : worst current practice • © OSInet

Maîtrised'ouvrage

Page 18: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7

22/66 • Drupal : worst current practice • © OSInet

Ne pas savoir choisir sa version core : 6, 7,8 et son type de développement

— Ces temps-ci…

• Projets courts, à courte durée de vie (événementiel, one-off) :

7, build basique

• Projets plus longs, livrés début 2015, destinés à une refonte

assez rapide  : 7, build best practice (cf session Best Practice)

• Projets plus longs, livrés mi-2015, destinés à un cycle de vie

plus long : 8, build best practice

• Évoluer les sites bloqués en 6 en mode découplé/composant.

• Ne plus lancer de nouveaux projets en 6

Build

Page 19: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7

23/66 • Drupal : worst current practice • © OSInet

Ne pas savoir définir ses choix en matièrede versions contrib

«  STABLE ONLY  »  : de plus en plus, dans les projetsDrupal, «  stable  » est synonyme d'«  obsolescent  »

⇒ coûts de maintenance adaptative

«  ANYTHING GOES  » : risque que les constructeursutilisent des modules expérimentaux, sans cycle demise à jour disponible, voire non maintenus

⇒ coûts de maintenances corrective et adaptative

Build

Page 20: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7

24/66 • Drupal : worst current practice • © OSInet

Et plus...

• Ne pas réceptionner au fil de l’eau — pendant lesitérations — pour intercepter rapidement lesdivergences (héritage du cycle en V)

• Lors des réceptions d’itération, ne pas vérifier l’état de propreté du site (installation from scratchpossible, absence de doublons fonctionnels, detraces de composants abandonnés...)

Build

Page 21: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7

25/66 • Drupal : worst current practice • © OSInet

Processus dedéveloppement

Page 22: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7

26/66 • Drupal : worst current practice • © OSInet

Ne pas utiliser de gestionnaire de versions

...DU TOUT (dernier en date observé : ce mois-ci !)

...EFFICACEMENT :• code commenté en production au lieu d’être dans

une révision• commentaires de commit inutilisables• commits trop espacés• pas de process de branching réfléchi (eg: git flow,

github flow…)

Build

Page 23: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7

27/66 • Drupal : worst current practice • © OSInet

Créer un site par accumulation demodules contrib à portée limitée

• Souci additionnel de qualité, fragilité, maintenanceet MàJ

• Sauf dans le cas de couverture à 100 % de lafonctionnalité, l’adaptation est à long terme pluscoûteuse qu’un spécifique

Build

Page 24: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7

28/66 • Drupal : worst current practice • © OSInet

Créer un site par accumulation dechangements, sans mécanisme de

déploiement• Génération des fichiers

• Drush Makefile / Composer : – Avantages: dépôt léger, MàJ permanente

– Inconvénients : dépendance sur la disponibilité du réseau, non-compliance,MàJ permanente = risque de casse

• Vendoring : – Avantages : disponibilité, rapidité, compliance

– Inconvénients : défaut de MàJ automatique, dépôt lourd

• Profil(s) d’installation Drupal• Chargement des données par migration (Migrate API)

Build

Page 25: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7

29/66 • Drupal : worst current practice • © OSInet

Hacker core/contrib

Build

• Rarement nécessaire : le plus souvent, c’est unmanque de connaissances

• Si nécessaire, committer les patches de façonreproductible (ex : drush makefile, répertoirepatches …)

Page 26: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7

30/66 • Drupal : worst current practice • © OSInet

Développer en PHP brut, sans passer parles API Drupal

Exemples typiques, souvent sources de problèmesde sécurité :• API de bases de données natives au lieu de DB

API/Schema API (injection SQL)• Accès aux superglobals, notamment $_GET (XSS)• Stockage de données privées dans $_COOKIE au

lieu de $_SESSION (mascarade)• Actions de modification sur GET sans jeton ou

formulaire non protégé (CSRF)

Build

Page 27: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7

31/66 • Drupal : worst current practice • © OSInet

Développer sans visibilité des erreurs auniveau maximal (error_reporting = -1)

Build

• Les notices et warnings s’accumulent durant ledéveloppement

• En fin de projet, on constate des massesd’insertions dans dblog (2014 : 1500 insertionswatchdog/seconde sur un site) et plus le temps decorriger donc on le désactive

• Du coup, plus de suivi des vraies alertes

Page 28: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7

33/66 • Drupal : worst current practice • © OSInet

Tests de recette et montée en charge

Ne pas faire de TMC : toutva bien sur les postes dedéveloppement / recette

Tester sur unenvironnement non iso-prod

Tester depuis un postelocal, notamment le serveurfront

Tester uniquement enanonyme

Build

Page 29: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7

34/66 • Drupal : worst current practice • © OSInet

Négliger la prise en compte des pratiquespermettant l’internationalisation

• Formats en dur (dates, nombres, monnaies) au lieudes API Drupal

• Assemblage de chaînes traduites :exemple t($a) . t($b)

• Chaînes de texte non traduites dans les templateset modules

Build

Page 30: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7

35/66 • Drupal : worst current practice • © OSInet

OWN

Page 31: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7

36/66 • Drupal : worst current practice • © OSInet

Hébergement

Page 32: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7

37/66 • Drupal : worst current practice • © OSInet

Confondrehébergement etinfogéranceUn site de production abesoin d’un infogérant (services système) etnon simplement d’unhébergeur (location dematériel etinfrastructure pour leranger)

• Backups• Configuration, MàJ et

monitoring du serveurWeb et ses modules,PHP et ses extensions,bases de données,serveurs de cache,serveur de filed’attentes, etc

Own

Page 33: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7

38/66 • Drupal : worst current practice • © OSInet

Déployer sans cached’opcodes ou sansmonitoring

• PHP 5.3 ou 5.4 : APC,PHP 5.5 : Opcache

• Monitoring : apc.php,ocp, opcache-status, opcache-gui…

Own

Page 34: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7

39/66 • Drupal : worst current practice • © OSInet

Déployer unMemcached sanscomprendre saconfiguration

• settings.php : clusters, bins, préfixe...• extension, persistence, stratégie de

hashing, ucp/tcp, text/binaire…• slab size• Monitoring: phpmemcacheadmin,memcache.php…

• Un memcached mal réglé peut êtrebeaucoup plus lent qu’un cache en basede données

• Typique :• entrées > 1 Mo et slab size par

défaut• multisites sans préfixe,• bins saturés,• mélange chaud/froid, gaspillage

d’allocation• Documenté à partir de Drupal 7.33

Own

Page 35: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7

40/66 • Drupal : worst current practice • © OSInet

Déployer sur unsystème de fichiersinapproprié

• Écritures synchrones :NFS système sansaccélérateur

• lstat() lentsprovoqués pourinclude_once -> tunerealpath cache

Own

Page 36: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7

41/66 • Drupal : worst current practice • © OSInet

Maintenanceapplicative :corrective etadaptative

Page 37: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7

42/66 • Drupal : worst current practice • © OSInet

Own

Ne pas appliquer les MàJ de sécurité dansles délais

Pourquoi ne pas lesappliquer  ?

• Rigidités entre mainteneur etinfogérant (procédures dedéploiement)

• Absence de réactivité dumainteneur

• Difficultés de MàJ :typiquement conséquencedes hacks core/contrib

Page 38: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7

43/66 • Drupal : worst current practice • © OSInet

Own

Page 39: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7

44/66 • Drupal : worst current practice • © OSInet

Travailler sanslogger

CAUSES TYPIQUES  :• Désactivation de dblog

faute d’avoir codé àerror_reporting élevé, pour faire face auxmasses de notices

• Absence d’utilisation desyslog ou d’un mécanismeplus tolérant commemongodb_watchdog

Own

Page 40: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7

45/66 • Drupal : worst current practice • © OSInet

FRONT  :

PERFORMANCE

Page 41: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7

46/66 • Drupal : worst current practice • © OSInet

Gestion decache

Page 42: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7

47/66 • Drupal : worst current practice • © OSInet

Cache de pagesinterne

• Cache interne désactivé(cache enabled :décoché)

• Expiration trop courte  :limitation à la scalabilitéinterne (liée à l’infrapropre) et non externe(web scale)

Front

Page 43: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7

48/66 • Drupal : worst current practice • © OSInet

Pages non cachables • Écriture dans $_SESSION ou$_COOKIE pour les anonymes

• démarrage de session quimarque la page non cachable

• génération complète au hitsuivant

• grosse limite de scalabilitéramenant les anonymes à peuprès au niveau des connectés

• Utilisation de Varnish et/ou d’unCDN ou autre reverse proxy,mais émission par le code d’en-têtes de non-cachabilité

• suppression de la scalabilitéexterne

• inutilité complète de ces outils

Front

Page 44: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7

49/66 • Drupal : worst current practice • © OSInet

Désaccord sur ladurée du cache

• Technique → longéditorial → court

• En l’absence d’unestratégie claire, forteprobabilité d’uneabsence de prise encharge technique valide

Front

Page 45: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7

50/66 • Drupal : worst current practice • © OSInet

Agrégation des assets

• Désactivée pour le CSS et/ou le JS• généralement, ce n’est pas un oubli, mais le

prestataire indique que le site ne fonctionne pasavec : c’est le signe d’une erreur de réalisation, leplus souvent pour le code JS

• Simple : il y a des mécanismes d’agrégationavancée plus efficaces, comme le module advagg,notamment si on utilise un CDN avec le moduleCDN

Front

Page 46: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7

51/66 • Drupal : worst current practice • © OSInet

Domain sharding

Front

• ABSENCE :• Les cookies sont émis par les clients sur les

requêtes d’asset

• Avec Varnish ou un autre reverse proxy  : nécessiteun VCL spécifique pour permettre de les ignorer etservir quand même de cache

• EXCÈS : multiplication des requêtes DNS pour lesclients

Page 47: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7

52/66 • Drupal : worst current practice • © OSInet

Et tous les problèmes du back office pour les

pages non cachées...

Page 48: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7

53/66 • Drupal : worst current practice • © OSInet

BACK

Page 49: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7

54/66 • Drupal : worst current practice • © OSInet

Requêtes sortantes durant le cycle depage

• La durée des pages devient > au temps de réponsede la ressource externe et peut bloquer

• Core:• update (uniquement pour les admins et sur

certaines pages)• aggregator, si poormanscron n’a pas été désactivé

SOLUTION Consommer dans des scripts CLI lancés parcron ou, mieux, depuis un worker de messaging externe(ex : Beanstalkd)

Back

Page 50: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7

56/66 • Drupal : worst current practice • © OSInet

Pic de charge inexpliqué après unelongue durée sans problème

TYPIQUE Utilisation d’un memcached avec l’erreur t($var) et la taille de cache_locale vient de dépasser 1Mo

VARIANTE Sur un site en évolution, une nouvelle version estbeaucoup plus lente en production qu'en développement

CONFIRMATION Déboguer l’utilisation du cache avecHeisencache ou XHprof

SOLUTION À court terme, augmenter la slab size, etrapidement corriger pour revenir à une taille normale

Back

Page 51: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7

57/66 • Drupal : worst current practice • © OSInet

Siteglobalementlent sans picspécifique

Page 52: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7

58/66 • Drupal : worst current practice • © OSInet

Cache de blocs désactivé

CAUSE Typiquement un ou plusieurs modules denode_access

CONFIRMATION Configurer stark pour n’avoir quele bloc contenu, basculer dessus momentanément, etcomparer : il devrait être considérablement plusrapide

SOLUTION 1 Repenser la logique de contrôled’accès aux données

SOLUTION 2 Introduire du cache dans chaque bloc

Back

Page 53: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7

59/66 • Drupal : worst current practice • © OSInet

Back

Cache de données

PROBLÈME 1 Cache désactivé — courant sur lessites construits sur Views et Panels

MALGRÉ le cache intégré de Views (durée) et ViewsContent Cache (invalidation)

ET MALGRÉ Panels Hash Cache

PROBLÈME 2 Utilisé à niveaux multiples

⇒ Cache de données, puis de fragments, puisd’assemblages, puis de rendu, puis de blocs … = n aller-retours vers le serveur de cache là où un seul suffirait

DIAGNOSTIC Heisencache (PerformanceSubscriber)

Too much of agood thing is

wonderful

Page 54: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7

60/66 • Drupal : worst current practice • © OSInet

Cache de variables toujours en MISS

CAUSE TYPIQUE Un variable_set dans un hook du cyclede page : hook_boot / hook_init / hook_exit, functionde shutdown, etc

ORIGINE Confusion entre settings/config/state(formalisés en D8)

DIAGNOSTIC var_dump(debug_backtrace(FALSE)) dans variable_set() et remonter la pile pour trouver lecoupable

VARIANTE Autres caches toujours en MISS

SOLUTION GÉNÉRALE Heisencache (WriteSubscriber)

Back

Page 55: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7

61/66 • Drupal : worst current practice • © OSInet

Trop grand nombre de requêtes SQL

DIAGNOSTIC devel.module ou utiliser lesfonctions de trace de l’API DB

SOLUTION Manuelle

Back

Page 56: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7

62/66 • Drupal : worst current practice • © OSInet

Trop grand nombre d’interventions dehook, notamment sur les nodes

CAUSE TYPIQUE Trop de modules

SOLUTION Réduire le nombre d’implémentationsen repensant la logique fonctionnelle

HACK hook_module_implements_alter() pour supprimer les situations connues comme nepouvant donner lieu à une modification en pratique— difficile et fragile, mais résultats rapides

Back

Page 57: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7

63/66 • Drupal : worst current practice • © OSInet

Autres problèmes courants

Opérations en boucle (node_load, node_view) aulieu d’opérations multiples(node_load_multiple)

Back

Page 58: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7

64/66 • Drupal : worst current practice • © OSInet

CONCLUSION

Page 59: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7

65/66 • Drupal : worst current practice • © OSInet

Conclusion

La clef : compétence

• Compétence du maître d'ouvrage (MOA) :déléguer n’est pas ignorer ⇒ se faire bienentourer et suivre son projet

Page 60: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7

66/66 • Drupal : worst current practice • © OSInet

Conclusion

Page 61: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7

67/66 • Drupal : worst current practice • © OSInet

Conclusion

La clef : compétence

• Compétence du maître d'ouvrage (MOA) :déléguer n’est pas ignorer ⇒ se faire bienentourer et suivre son projet

• Compétences internes ou AMOA• Compétence du maître d'œuvre (MOE)

Page 62: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7

68/66 • Drupal : worst current practice • © OSInet

Mesurer pour agir

Conclusion

• Savoir quoi mesurer• Savoir sur quoi agir

selon la mesure

Page 63: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7

69/66 • Drupal : worst current practice • © OSInet

Adapter

Adapter les pratiques à la taille du projet

En-dessous de quelques milliers de visites/jour,le stack Drupal/LAMP pardonne à peu près toutsauf l’absence de MàJ.

Conclusion

Page 64: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7

70/66 • Drupal : worst current practice • © OSInet

PASSEZ NOUS DIRE BONJOUR  !

Frédéric G. Marand (fgm) Outi Munter (outi)

www.osinet.fr

Page 65: Recueil des mauvaises pratiques constatées lors de l'audit de sites Drupal 7

71/66 • Drupal : worst current practice • © OSInet

OSInet

[email protected]