it-swarm.com.de

Überprüft wp_insert_post die Eingabe?

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

3
Can't Tell

Die kurze Antwort;absolut.

wp_insert_post() wird nur SQL den Inhalt entziehen. Verwenden Sie die KSES-Bibliothek & wp_kses () , um die Bösen herauszufiltern, oder esc_html(), um all HTML zu entkommen.

Am wichtigsten ist, dass Sie den Kodex zur Datenvalidierung (sprich: Desinfektion) lesen.

A Hinweis zu KSES:Verwenden Sie wp_filter_kses () oder wp_kses_data(), um dieselben KSES-Regeln wie bei Kommentaren anzuwenden. Der feine Unterschied zwischen beiden besteht darin, dass ersterer erwartet, dass Daten mit Schrägstrichen maskiert werden (und dasselbe zurückgeben), während letzterer dies nicht tut.

WordPress (bizarr)erzwingt magische Anführungszeichen, daher werden $_POST, $_GET (und dergleichen) standardmäßig Escape-Schrägstriche hinzugefügt.

A Hinweis zu wp_insert_post ():Diese Funktion erwartet außerdem, dass dem Datenarray Schrägstriche hinzugefügt werden, sodass Sie es mit add_magic_quotes () bereinigen müssen, falls dies nicht der Fall ist.

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 )
7
TheDeadMedic