WordPress bereinigt es eine benutzerdefinierte query_var, um SQL-Injektionen zu vermeiden?

7

Ich benutze die get_query_varFunktion, um eine benutzerdefinierte zu erhalten query_var. Dies query_varwird später verwendet, um Argumente abzufragen, um Beiträge abzurufen mit:

$the_query = new WP_Query( $args );

Meine Frage ist, ist es sicher, wenn ich das verwende get_query_var, was bereitgestellt wird, oder muss ich diese Variable bereinigen, um SQL-Injektionen zu vermeiden?

Ich habe diesen Beitrag gelesen , aber er ist nicht ganz klar und auch alt.

Richzendy
quelle
1
Eine öffentliche Abfragevariable muss als Benutzereingabe behandelt werden. Sie sollten sie daher bereinigen und validieren, bevor Sie sie verwenden. Das WP_QueryObjekt macht die Argumente für Datenbankinteraktionen sicher, z. B. das Verhindern von SQL-Injektionen. Es ist jedoch gut, dass Sie die Benutzereingabedaten bereinigen und anhand des erwarteten Werts validieren.
Cybmeta
1
Ich habe Folgendes gefunden: codex.wordpress.org/Function_Reference/sanitize_text_field codex.wordpress.org/Function_Reference/… Das kann mir helfen, meine Benutzereingabedaten zu bereinigen . Vielen Dank für alles. Besonderer Dank geht an Pieter Goosen für Ihre Hilfe bei meiner Grammatik.
Richzendy
Richzendy oder @cybmeta, können Sie die Lösung als Antwort aufschreiben?
Jen
Ja, was ich meine ist - können Sie das als Antwort schreiben, nicht als Kommentar. :) Dafür bekommst du mehr Internetpunkte.
Jen

Antworten:

3

In einer perfekten Welt müssen Sie Ihre Abfragen nicht bereinigen, da das WordPress-ORM SQL-Injektionen in die Datenbank vermeidet. Es wird jedoch dringend empfohlen, Ihre Eingabedaten zu bereinigen, insbesondere wenn Eingabedaten von einem Besucher bereitgestellt werden.

Sie können beispielsweise Folgendes verwenden:

$name = sanitize_text_field( $_POST['name'] );
// WP_Query arguments
$args = array (
    'name' => $name,
);

// The Query
$query = new WP_Query( $args );

Es gibt viele Filterfunktionen, die bereinigen können:

  • sanitize_email ()
  • sanitize_file_name ()
  • sanitize_html_class ()
  • sanitize_key ()
  • sanitize_meta ()
  • sanitize_mime_type ()
  • sanitize_option ()
  • sanitize_sql_orderby ()
  • sanitize_text_field ()
  • sanitize_title ()
  • sanitize_title_for_query ()
  • sanitize_title_with_dashes ()
  • sanitize_user ()

Weitere Informationen finden Sie unter:

https://codex.wordpress.org/Validating_Sanitizing_and_Escaping_User_Data

Richzendy
quelle