Quanto è sicuro / igienizzato wp_insert_posts ()?


13

Guardando il Codice per wp_insert_post () si afferma che questa funzione "... sanifica le variabili, esegue alcuni controlli, riempie le variabili mancanti come data / ora, ecc." (EDIT: ho aggiornato la voce del Codex per includere un esempio più solido che include sicurezza, post meta e assegnazione di categorie)

Mi chiedo solo se ho bisogno di eseguire ulteriori operazioni di sanitizzazione per prevenire hack XSS e simili o se si sta facendo abbastanza attraverso la funzione.

Ad essere sincero, ho controllato la funzione in core e non ho trovato alcun wp_kses () o altra sanificazione su post_content per esempio, quindi sono un po 'preoccupato. Tutto quello che posso vedere è che striplashes_deep () sui dati.

Quindi dovrei eseguire wp_kses () o qualsiasi altra cosa quando costruisco i miei argomenti su wp_insert_post ()?

Qual è la migliore pratica qui? Il Codice è piuttosto sprezzante riguardo alla sicurezza nel suo esempio.

Grazie


2
Impedisce solo l'iniezione SQL. Se vuoi eseguire kses sul contenuto, dovrai farlo da solo. WP non può indovinare quale HTML eliminare. Cosa succede se il post viene inviato da un amministratore e desidera inserirlo <script>al suo interno?
onetrickpony,

Bene, buono a sapersi. wp_kses_post () su tutto quindi e wp_kses_title () sul titolo!
Tom Auger

Aggiornato il codice per mostrare un esempio di convalida dei dati e wp_insert_posts ().
Tom Auger,

Risposte:


11

Non devi fare niente.

Al carico WP:

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

Dopo:

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

Allo stesso modo per i titoli dei post, i commenti e così via.

Conclusione: wp_insert_post () è molto igienizzato. :)


Grazie Scribu per quella correzione - sicuramente un modo migliore per andare! Anche se vorrei che non avessi eliminato l'intero frammento di codice, perché era anche una buona illustrazione di altri aspetti dell'uso di wp_insert_post () che l'esempio principale non copre.
Tom Auger,

Sì, mi sono sentito male anche per quello. Tuttavia, era oltre lo scopo di wp_insert_post (). Un tutorial separato dall'alto verso il basso sarebbe meglio, credo.
scribu,

Risposta e codice aggiornati.
scribu,

lol @ ultima modifica. a volte ci vuole un po 'di scavo per trovare tutto l'oro già sepolto all'interno del nucleo :) Ho perso il filo quando lo stavo rintracciando. Sembra che tu sia un investigatore migliore di me! Grazie per attenersi a questo e per aggiornare il codice.
Tom Auger,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.