Validiert wp_insert_post die Eingabe?

Wenn ich die wp_insert_post in einem Plugin verwende, muss ich den Inhalt auf SQL Injection-Probleme und XSS überprüfen oder wird die wp_insert_post-function dies für mich tun?

Solutions Collecting From Web of "Validiert wp_insert_post die Eingabe?"

Die kurze Antwort; absolut .

wp_insert_post() nur den Inhalt von SQL. Verwenden Sie die KSES-Bibliothek & wp_kses () , um die Nasties herauszufiltern, oder esc_html() , um allen HTML- esc_html() zu esc_html() .

Am wichtigsten ist, überprüfen Sie den Codex auf Daten validation (lesen Sie: Bereinigung).

Eine Anmerkung zu KSES: Verwenden Sie wp_filter_kses () oder wp_kses_data() , um die gleichen KSES-Regeln wie Kommentare anzuwenden. Der feine Unterschied zwischen den beiden ist, dass die ersteren erwarten, dass die Daten mit Schrägstrichen durchbrochen werden (und die gleichen zurückgeben), während das letztere nicht der Fall ist.

WordPress (bizarr) erzwingt magische Anführungszeichen , so dass $_POST , $_GET (und dergleichen) standardmäßig mit Escape-Schrägstrichen versehen werden.

A Hinweis zu wp_insert_post (): Diese function erwartet auch, dass dem Datenarray Slashes hinzugefügt werden. Wenn dies nicht der Fall ist, müssen Sie es mit add_magic_quotes () bereinigen .

Update: Und in die Praxis umsetzen;

 $_POST['post_title'] = wp_filter_nohtml_kses( $_POST['post_title'] ); // also expects & returns slashes $_POST['post_content'] = wp_filter_kses( $_POST['post_content'] ); $post_ID = wp_insert_post( $_POST ); // add to the fun - wp_update_post() will add slashes if $postdata is an object! $update = ( object ) stripslashes_deep( array( 'ID' => $post_ID ) + $_POST ); $update->post_title .= ' Updated!'; wp_update_post( $update )