Qu'est-ce que la sanitization WordPress ?

La sanitization est un terme utilisé dans le cadre de WordPress pour référer à la pratique consistant à éliminer ou à modifier les informations non autorisées ou dangereuses d’une entrée d’utilisateur ou d’une sortie de programmation. En d’autres termes, la sanitization dans WordPress signifie que les données indésirables sont nettoyées avant d’être traitées. La sanitization est utilisée pour protéger le site Web WordPress et ses utilisateurs des attaques de piratage et des virus.

Faille cross-site scripting (XSS) dans WordPress

La sanitization est souvent utilisée pour prévenir le cross-site scripting (XSS), qui est l’injection de code malveillant dans une page Web qui est ensuite exécuté par le navigateur Web de l’utilisateur. L’utilisation de la sanitization peut aider à éviter que des informations non autorisées ne pénètrent dans le système et prévenir les violations de la vie privée des utilisateurs.

La sanitization est un élément clé de la sécurité de WordPress car elle permet de s’assurer que les informations transitant par le site sont sûres et non vulnérables. Elle est généralement effectuée dès l’entrée des données, afin de s’assurer que les données indésirables ne sont pas transmises au système.

Exemples de sanitization dans WordPress

Voici quelques exemples de la façon dont WordPress utilise la sanitization :

  1. Les formulaires de commentaires sont verrouillés et les mots interdits sont supprimés pour éviter les commentaires inappropriés et la propagande commerciale.
  2. Les données des champs de formulaire sont vérifiées et nettoyées pour éviter la soumission de données indésirables.
  3. Les adresses IP sont vérifiées pour éviter le spam.
  4. Les fichiers téléchargés sont contrôlés pour s’assurer qu’ils ne contiennent pas de codes malveillants.
  5. Les entrées de la base de données sont vérifiées pour s’assurer que seules les sources autorisées y sont présentes.

Enfin, la sanitization est également utilisée pour prévenir le piratage et la corruption des données. Les données des formulaires et les informations provenant des bases de données sont vérifiées et nettoyées avant d’être traitées. Ceci permet de s’assurer que seules les données autorisées sont transmises et de minimiser les risques de violation de données.

Sanitiser des données dans WordPress

Dans le développement de sites WordPress, sanitiser les données est une étape cruciale pour garantir la sécurité et l’intégrité de vos contenus. Que vous traitiez des entrées d’utilisateurs, des titres, des URLs, des champs de texte ou des attributs HTML, WordPress met à disposition un ensemble de fonctions robustes pour nettoyer et sécuriser ces données. Ces fonctions, comme sanitize_email(), sanitize_text_field(), sanitize_url() ou encore esc_html(), protègent votre site contre les données non valides, les caractères spéciaux indésirables, et les injections malveillantes.

L’objectif principal de ces fonctions est de garantir que les données entrées par les utilisateurs ou stockées dans la base de données respectent les formats attendus et n’introduisent pas de vulnérabilités. Par exemple, les fonctions comme sanitize_file_name() empêchent l’utilisation de caractères illégaux dans les noms de fichiers, tandis que esc_js() et esc_attr() sécurisent les chaînes de texte destinées à être utilisées dans du JavaScript ou des attributs HTML.

Si votre site a déjà été piraté ou présente des failles de sécurité, il est essentiel d’agir rapidement pour le remettre en service. Nous proposons un service de remise en service de sites WordPress piratés, disponible sur WP Assistance. Notre équipe d’experts peut vous aider à restaurer la sécurité et à protéger votre site contre de futures attaques.

L’utilisation des fonctions de sanitisation dans WordPress est une mesure de prévention incontournable pour assurer la sécurité de votre site, mais en cas d’incident, il est tout aussi essentiel d’avoir une stratégie de récupération fiable.

sanitize_email

Supprime tous les caractères qui ne sont pas autorisés dans une adresse e-mail valide, en conservant uniquement ceux conformes au format standard d’une adresse e-mail.

sanitize_file_name

Nettoie un nom de fichier en remplaçant les espaces par des tirets. Supprime les caractères spéciaux interdits dans les noms de fichiers sur certains systèmes d’exploitation, ainsi que les caractères nécessitant un échappement particulier pour être manipulés en ligne de commande. Remplace les espaces et les tirets consécutifs par un seul tiret. Supprime les points, tirets et underscores au début et à la fin du nom de fichier. Il n’est pas garanti que cette fonction retourne un nom de fichier autorisé à être téléchargé.

sanitize_html_class

Nettoie le nom d’une classe CSS dans un élément HTML afin de s’assurer qu’il ne contient que des caractères valides pour une utilisation en CSS.

sanitize_text_field

Nettoie une chaîne de caractères provenant de l’entrée utilisateur via un formulaire ou de la base de données.

  • Vérifie les caractères UTF-8 non valides.
  • Convertit les caractères < simples en entités HTML.
  • Supprime toutes les balises HTML.
  • Retire les sauts de ligne, les tabulations et les espaces superflus.
  • Supprime les caractères encodés en pourcentage.

sanitize_textarea_field

Nettoie les champs de type textarea ou, de la base de données, tout en conservant les caractères de nouvelle ligne.

Cette fonction est similaire à sanitize_text_field(), mais elle conserve les sauts de ligne (\n) et les autres espaces blancs, qui sont des entrées valides dans les éléments de type textarea.

esc_url_raw

Nettoie une URL pour une utilisation dans une base de données ou pour des redirections.

Cette fonction est un alias de sanitize_url() et sert à s’assurer que l’URL fournie est propre et sécurisée avant d’être enregistrée en base de données ou utilisée dans des redirections. Elle élimine les caractères invalides et applique des filtres de sécurité pour empêcher des attaques potentielles, comme les injections malveillantes dans les URL.

sanitize_option

Nettoie diverses valeurs d’options en fonction de la nature de l’option.

Cette fonction agit essentiellement comme une déclaration switch qui passe la valeur $value à travers plusieurs fonctions de nettoyage, en fonction de l’option spécifiée ($option). Cela permet d’appliquer des règles spécifiques pour différentes options de configuration, garantissant que les valeurs sont sécurisées et correctement formatées avant d’être enregistrées dans la base de données.

sanitize_meta

Un système basé sur des hooks pour nettoyer les valeurs meta selon des règles.

La fonction sanitize_meta() applique des règles spécifiques pour nettoyer une valeur de méta avant de l’enregistrer. Le processus de nettoyage dépend du type de méta et de l’objet auquel elle est associée (comme un article, un utilisateur, ou un terme). Cette fonction utilise un système basé sur des hooks pour permettre aux développeurs de définir des règles personnalisées pour chaque type de méta, garantissant ainsi que les données sont sécurisées et valides avant d’être stockées.

wp_kses

Filtre le contenu textuel et supprime les balises HTML non autorisées.

La fonction wp_kses() garantit que seules les balises HTML autorisées, ainsi que les noms d’attributs, les valeurs d’attributs et les entités HTML autorisées, apparaissent dans la chaîne de texte donnée. Cette fonction est particulièrement utile pour sécuriser le contenu en s’assurant qu’aucun HTML non autorisé ou dangereux n’est présent, comme des balises pouvant introduire des failles XSS (Cross-Site Scripting).

Cette fonction s’attend à recevoir des données non échappées (non « slashed »).

Autres fonctions associées :

  • wp_kses_post() : pour filtrer spécifiquement le contenu des articles et leurs champs.
  • wp_allowed_protocols() : pour les protocoles autorisés par défaut dans les URLs des liens.

sanitize_key

Nettoie une clé sous forme de chaîne de caractères.

Les clés sont utilisées comme identifiants internes dans WordPress. La fonction sanitize_key() s’assure que la clé contient uniquement des caractères alphanumériques en minuscules, des tirets et des underscores. Cela permet de garantir que les clés sont formatées correctement et prêtes à être utilisées en interne dans WordPress, tout en évitant les caractères non valides qui pourraient causer des erreurs ou des incohérences dans le système.

Utilisé par WordPress pour les noms de plugins.

sanitize_mime_type

Nettoie les types MIME, comme « image/jpeg ».

La fonction sanitize_mime_type() s’assure qu’un type MIME est correctement formaté avant d’être utilisé. Un type MIME valide est une chaîne composée de deux parties séparées par une barre oblique (par exemple, « image/jpeg » ou « text/html »). Cette fonction vérifie que le type MIME fourni respecte cette structure et élimine les caractères non autorisés, garantissant ainsi que seuls des types MIME valides et sûrs sont utilisés dans WordPress, notamment lors du téléchargement de fichiers.

sanitize_sql_orderby

Vérifie qu’une chaîne est une déclaration SQL ‘order by’ valide.

La fonction sanitize_sql_orderby() s’assure qu’une chaîne de texte constitue une clause SQL ‘ORDER BY’ valide. Elle accepte une ou plusieurs colonnes, avec ou sans ordre de tri (ASC pour ascendant ou DESC pour descendant). Par exemple : 'column_1', 'column_1, column_2', ou encore 'column_1 ASC, column_2 DESC'.

La fonction prend également en charge des expressions telles que 'RAND()' pour un tri aléatoire des résultats. Cela garantit que les clauses ‘ORDER BY’ utilisées dans les requêtes SQL sont sécurisées et bien formatées, réduisant ainsi le risque d’erreurs ou d’injections SQL.

sanitize_title

Nettoie une chaîne pour en faire un slug, utilisable dans des URLs ou des attributs HTML.

La fonction sanitize_title() convertit une chaîne de caractères en un slug propre, c’est-à-dire un format de texte compatible avec les URLs et les attributs HTML. Par défaut, elle remplace les caractères accentués par leurs équivalents ASCII et limite la sortie aux caractères alphanumériques, aux underscores (_) et aux tirets (-), via le filtre ‘sanitize_title’.

Si la variable $title est vide et que $fallback_title est défini, cette dernière sera utilisée comme titre de secours. Cette fonction est particulièrement utile pour générer des slugs propres pour les articles, les pages ou les catégories dans WordPress.

sanitize_title_for_query

Nettoie un titre de publication spécifiquement pour une requête de base de données.

La fonction sanitize_title_for_query() est utilisée pour nettoyer un titre en vue d’effectuer une requête dans la base de données. Elle est particulièrement utile lorsqu’un titre est extrait d’une URL et doit être utilisé dans une requête SQL pour garantir que les données sont sécurisées et correctement formatées. Cela permet de minimiser les risques de failles de sécurité comme les injections SQL lors des recherches dans la base de données à partir de valeurs provenant d’URL.

sanitize_title_with_dashes

Nettoie un titre en remplaçant les espaces et certains autres caractères par des tirets.

La fonction sanitize_title_with_dashes() formate un titre en limitant la sortie aux caractères alphanumériques, aux underscores (_) et aux tirets (-). Elle remplace les espaces par des tirets, ainsi que d’autres caractères spécifiques, pour générer un slug propre et compatible avec les URLs. Cela garantit que le titre peut être utilisé dans des contextes où seuls ces caractères sont autorisés, comme dans les permaliens ou les noms de fichiers.

sanitize_user

Nettoie un nom d’utilisateur pour qu’il corresponde aux standards de WordPress, c’est à dire en supprimant les caractères non sécurisés.

La fonction sanitize_user() retire les balises, les caractères encodés en pourcentage, les entités HTML et, si le mode strict est activé, ne conserve que les caractères alphanumériques, les underscores (_), les espaces, les points (.), les tirets (-) et les symboles arobase (@). Après le nettoyage, la fonction passe le nom d’utilisateur, le nom brut (tel qu’il a été fourni en paramètre), et la valeur de $strict comme paramètres pour le filtre ‘sanitize_user’.

Cela permet de s’assurer que les noms d’utilisateur sont sécurisés et conformes aux standards de WordPress, tout en évitant l’utilisation de caractères potentiellement dangereux.

wp_filter_post_kses

Nettoie le contenu en autorisant uniquement certaines balises HTML pour le contenu des articles.

La fonction wp_filter_post_kses() permet de filtrer et de nettoyer le contenu d’un article en s’assurant que seules certaines balises HTML autorisées peuvent être utilisées. Elle est spécifiquement destinée à nettoyer le contenu des pages et articles de type post, et ne s’applique pas aux données provenant des formulaires $_POST.

Cette fonction attend des données avec des barres obliques ajoutées (slashed data) et s’assure que le contenu est sécurisé avant d’être affiché ou stocké.

wp_filter_nohtml_kses

Supprime toutes les balises HTML d’une chaîne de texte.

La fonction wp_filter_nohtml_kses() retire complètement toutes les balises HTML d’une chaîne de texte, garantissant qu’aucun contenu HTML ne soit conservé. Elle est utile pour nettoyer les données textuelles en s’assurant qu’aucune balise HTML, potentiellement dangereuse ou indésirable, n’est présente. Cette fonction attend des données avec des barres obliques ajoutées (slashed data).

Les fonctions d’échappement dans WordPress

Les fonctions d’échappement jouent un rôle essentiel dans la sécurisation de votre site WordPress en empêchant l’exécution de code malveillant. Ces fonctions, telles que esc_html(), esc_url(), esc_attr() ou esc_js(), permettent de sécuriser les données avant qu’elles ne soient affichées ou utilisées dans des éléments HTML, JavaScript, ou des URLs. Elles protègent contre les vulnérabilités comme les attaques XSS en s’assurant que seules les données correctement formatées et sûres sont rendues publiques. Utiliser ces fonctions est une bonne pratique pour maintenir la sécurité et l’intégrité de votre site.

esc_html

Échappe les blocs HTML pour les sécuriser.

La fonction esc_html() est utilisée pour échapper les caractères spéciaux dans de grands blocs de contenu HTML. Elle transforme les caractères potentiellement dangereux (comme <, >, &, et ") en leurs équivalents HTML, empêchant ainsi toute injection de code ou faille XSS (Cross-Site Scripting). Cette fonction est idéale lorsque vous affichez des données utilisateur ou des contenus dynamiques dans un contexte HTML afin de protéger votre site.

esc_url

Vérifie et nettoie une URL.

La fonction esc_url() supprime certains caractères invalides d’une URL pour s’assurer qu’elle est correctement formatée et sécurisée. Si l’URL est destinée à être affichée (comportement par défaut), les caractères ampersands (&) sont également remplacés par leurs entités HTML (&amp;). Le filtre ‘clean_url’ est appliqué à l’URL nettoyée avant qu’elle ne soit retournée. Cette fonction est cruciale pour protéger contre les injections de liens malveillants et garantir que l’URL est valide et sécurisée avant de l’utiliser.

esc_js

Échappe les guillemets simples, doubles, les caractères &amp;, et corrige les sauts de ligne.

La fonction esc_js() échappe les chaînes de texte destinées à être utilisées dans du JavaScript inline, par exemple dans un attribut de balise HTML tel que onclick="...". Elle s’assure que les caractères spéciaux, comme les guillemets simples et doubles, sont sécurisés et que les sauts de ligne sont correctement gérés pour éviter toute exécution de code non désiré. Les chaînes doivent être entourées de guillemets simples. Le filtre ‘js_escape’ est également appliqué à la chaîne traitée.

esc_attr

Échappement pour les attributs HTML.

La fonction esc_attr() est utilisée pour sécuriser les valeurs insérées dans les attributs HTML (comme alt, title, class, id, etc.). Elle échappe les caractères spéciaux tels que les guillemets, les chevrons et les ampersands pour empêcher toute injection de code malveillant ou faille de sécurité. Cela garantit que les données utilisateur ou dynamiques insérées dans les attributs HTML sont sûres et correctement formatées.

esc_textarea

Échappement pour les valeurs de balises <textarea>.

La fonction esc_textarea() est utilisée pour sécuriser les contenus insérés dans une balise HTML <textarea>. Elle échappe les caractères spéciaux, tels que les chevrons, les guillemets, et les ampersands, tout en préservant les sauts de ligne, qui sont valides dans ce contexte. Cela garantit que le contenu inséré dans une balise <textarea> ne contient pas de code malveillant et est sécurisé pour être affiché ou traité.

Consultez aussi d’autres définitions
Voici quelques articles qui en parlent

Vous souhaitez travailler avec notre agence ?