Bonjour à tous,

J'aimerais obtenir de l'aide pour enregistrer du contenu HTML de manière sécurisée en base de données j'utilise Laravel. Mon objectif est de stocker du code HTML, mais d'éviter les failles et de le réafficher en toute sécurité.

En utilisant htmlspecialschars les "< >" se transforme en < >
J'ai essayé d'utiliser un purifier mais sa cause des problèmes avec certains style
Pour le moment j'envoie le code html directement et j'encode en base64 pour mettre dans la base de données

Cependant je doute que se soit réellement sécurisé, avez-vous des conseils, des petites astuces ?

Merci d'avance

2 réponses


popotte
Réponse acceptée

Hello :)

Alors l'encodage en base64c'est sécurisé, maintenant tout dépend de l'objectif de la mise en base de donnée du code HTML, et surtout de ce qu'il faut sécuriser

Concrètement le HTML n'a pas besoin d'être sécurisé, ce qu'il faut sécuriser ce sont les contenus sensibles (clés api, variables d'environnement, etc...) sauf que base de données ou pas, au final quand le site affichera le html, ces données sensibles seront visibles de toutes façon si ils sont présents dans le HTML (bref de base il ne faut pas afficher de contenus sensibles dans le HTML)

Si le but c'est de sécuriser un formulaire, alors tu es dans laravel, le mieu ce serait de mettre ce code dans un fichier Blade (le template de base de Laravel) comme ça Laravel va de base interpréter le code et placer toute la sécurité, pour le formulaire tu as un @csrf qui va s'assurer que le formulaire n'a pas été modifié, et tous les champs sont d'office en htmlSpecialChars, bref un formulaire est déjà sécurisé par Laravel, et si tu craint une modification du formulaire Laravel protège aussi ce cas avec son checksum

Ensuite si tu encodes en Base64 alors c'est sécurisé seulement si tu caches bien ta clé d'encryption, il faut que ce soit dans une variable d'environnement et c'est safe

NicolasBAUD
Auteur
Réponse acceptée

Salut, merci pour ta réponse !

Je développe une application d'envoie de newsletter par email, et je propose d'importer sa propre template en HTML via un formulaire, je ne savais pas vraiment si il pouvait y avoir des problèmes de sécurités comme l'injection de script même après un encodage, après plus amples recherche j'ai fini par conclure que l'encodage en base64 accompagné d'un htmlPurifier suffirait pour la sécurité des données.

Problème réglé :)

Merci