web-dev-qa-db-fra.com

$ wpdb est get_results échappé

Je suppose que la réponse est non, mais je voulais être sûr. Je m'attendrais à ce que, lorsque j'obtienne un objet de base de données ou un tableau utilisant get_results, j'ai toujours besoin d'ajouter htmlspecialchars () ou esc_html () lors du placement de la sortie au format HTML. J'ai regardé la fonction, mais ce n'est pas vraiment clair sans trouver des fonctions que la fonction get_results utilise (et je ne sais pas à quelle profondeur il me faudrait creuser). Cette question soulève une toute petite question. Une raison d'utiliser la fonction WordPress esc_html () sur le générique htmlspecialchars ()?

1
tim92109

La réponse est: bien sûr qu’ils ne le sont pas - sinon vous ne pourriez pas les utiliser pour les sauvegarder dans DB.

Mais ... la réponse à votre question n’est pas si facile.

Sanitizing est un processus de préparation des données à stocker dans la base de données. Ainsi, par exemple, si vous insérez des caractères non autorisés dans post_name, ceux-ci seront supprimés. Le post_name est donc nettoyé avant la sauvegarde. Si vous utilisez le sélecteur de couleurs dans Customizer, vous devez le clarifier (en vérifiant s’il s’agit bien d’une couleur et non d’une chaîne aléatoire) avant d’enregistrer. Etc.

Mais les données assainies peuvent toujours être dangereuses. Vous pouvez utiliser le caractère ">" dans le titre, ainsi le titre qui le contient sera nettoyé. Mais bien sûr, vous ne pouvez pas l’imprimer en HTML avec votre code.

C’est là que s’échappant rejoint la partie. Échapper est un processus de sécurisation des données de la base de données pour le code HTML (basé sur le contexte). Rappelez-vous que le même titre doit être échappé de manière différente lorsqu’il est imprimé dans une balise (vous devez alors utiliser esc_html), alors qu’il est utilisé comme attribut HTML (vous devez utiliser esc_attr) et ainsi de suite.

Donc, oui, vous devez toujours nettoyer vos données avant de les stocker dans la base de données et toujours utiliser le moyen de sortie correct basé sur un contexte donné.

0
Krzysiek Dróżdż