Mais virez donc ces console.log

Déboguer des variables et des objets dans la console est assez pratique. Lorsqu’on dév une app, on peut explorer les données reçues depuis un backend par exemple pour afficher les informations correctement ou déclencher des traitements supplémentaires.

Bon bah quel est le problème avec console.log?

On peut se dire qu’un script côté client est accessible par définition depuis le navigateur, même si cela demande de fouiller un peu le code source affiché. De là, ce n’est pas forcément de notre responsabilité si des informations sensibles sont leakées.

La faute à l’architecture de mer*** ou un mauvais commit côté backend…

Je ne suis pas d’accord avec ce point de vue. Il y a toujours la possibilité que l’on soit entrain de contourner la logique d’un contrôleur en exposant des données sensibles. De cette manière, on peut orienter et faciliter le travail d’un hacker.

Ne faites jamais confiance aux autres couches de l’appli aveuglément.

Les migrations ratées, les mauvais commits et autres joyeuseries arrivent malgré toute la bonne volonté et la vigilance qu’on peut y mettre.

De plus, si des informations sensibles sont collectées sur un environnement de pré-production, par exemple, pour une analyse du code ou la génération automatique de rapports, ces console.log deviennent illégaux au sens propre.

En tout cas, il est probable que ce soit contraire à la politique de vie privée affichée.

Comment éviter les problèmes

La situation à laquelle je fais référence ici correspond typiquement à ce genre de déclarations:

Ce n’était pas censé arriver. On ne pouvait pas anticiper une telle cascade d’événements

Certes, le risque 0 n’existe pas et nettoyer des console.log n’a jamais rendu une appli indestructible, on ne va pas se mentir.

La sécurité est un ensemble de bonnes pratiques et un hacker determiné tentera toutes les pistes possibles donc même des éléments qui paraissent anodins peuvent l’aiguiller ou le sortir de l’impasse…

Si vous ne voulez pas leur faire ce cadeau, vous pouvez:

  • supprimer tout bonnement ces écritures: lisez ce post pour le faire depuis votre éditeur
  • ajouter un wrapper pour tous les console.error, console.warning, console.table, console.log, etc, et activer/désactiver ce helper via une variable d’environnement
  • utiliser un paquet NPM qui s’occupe de supprimer ces écritures au moment du build
  • utiliser une librairie pour le débug
  • remplacer les logs par le débogueur du navigateur (ex: Chrome dev tools)

Conclusion

Laisser traîner des console.log ou tout autre variant en prod n’est ni pertinent pour les utilisateurs finaux ni 100% anodin d’un point de vue sécurité.

Les hackers recherchent activement ce genre d’information. Tout ce qui pourrait les mettre sur la piste augmente les risques.

A voir aussi