Dans quelle mesure wp_insert_posts () est-il sûr / désinfecté?

13

En regardant le Codex pour wp_insert_post (), il indique que cette fonction "... désinfecte les variables, vérifie, remplit les variables manquantes comme la date / l'heure, etc." (EDIT: j'ai mis à jour l'entrée du Codex pour inclure un exemple plus robuste qui comprend la sécurité ainsi que la méta-post et l'attribution de catégorie)

Je me demande simplement si je dois effectuer un nettoyage supplémentaire pour empêcher les hacks XSS et autres ou si suffisamment est fait via la fonction.

Pour être honnête, j'ai vérifié la fonction dans core et je n'ai trouvé aucun wp_kses () ou autre nettoyage sur post_content par exemple, donc je suis un peu inquiet. Tout ce que je peux voir, c'est stripslashes_deep () sur les données.

Dois-je donc exécuter wp_kses () ou autre chose lorsque je crée mes arguments sur wp_insert_post ()?

Quelle est la meilleure pratique ici? Le Codex est assez cavalier sur la sécurité dans son exemple.

Merci

Tom Auger
la source
2
Il empêche uniquement l'injection SQL. Si vous souhaitez exécuter kses sur le contenu, vous devrez le faire vous-même. WP ne peut pas deviner quel HTML supprimer. Que se passe-t-il si le message est soumis par un administrateur et qu'il souhaite en insérer un à l' <script>intérieur?
onetrickpony
Bon, bon à savoir. wp_kses_post () sur tout alors et wp_kses_title () sur le titre!
Tom Auger
Mise à jour du Codex pour afficher un exemple de validation des données et wp_insert_posts ().
Tom Auger

Réponses:

11

Vous n'avez rien à faire.

Sur chargement WP:

'init' hook -> kses_init() -> kses_init_filters()

Plus tard:

wp_insert_post() -> sanitize_post() -> sanitize_post_field() -> 'content_save_pre' -> wp_filter_post_kses()

De même pour les titres des articles, le texte des commentaires, etc.

Conclusion: wp_insert_post () est très aseptisé. :)

scribu
la source
Merci Scribu pour cette correction - certainement une meilleure façon de procéder! Bien que j'aurais aimé que vous n'ayez pas mis au rebut l'intégralité de cet extrait de code, car c'était également une bonne illustration d'autres aspects de l'utilisation de wp_insert_post () que l'exemple principal ne couvre pas.
Tom Auger
Ouais, je me sentais un peu mal à ce sujet aussi. Cependant, cela dépassait le cadre de wp_insert_post (). Un tutoriel séparé de haut en bas serait mieux, je pense.
scribu
Réponse et codex mis à jour également.
scribu
lol @ dernière modification. Parfois, il faut creuser pour trouver tout l'or déjà enterré à l'intérieur du noyau :) J'ai perdu le fil lorsque je le retraçais. On dirait que tu es un meilleur détective que moi! Merci de vous en tenir à cela et de mettre à jour le codex.
Tom Auger