esc vor dem Speichern oder vor der Anzeige spielt es eine Rolle?

Bei der Erstellung von benutzerdefinierten Metabox-Tutorials wird beim Speichern von Daten, z. B. update_post_meta, eine Menge an Daten maskiert:

update_post_meta( $post_id, 'city', esc_attr( ucwords( $_POST['city'] ) ) ); 

Einige Tutorials sind beim Speichern nicht Esc und machen es auf dem Bildschirm.

Das Escaping schützt jedoch die Ausgabe auf dem Bildschirm, dh Echo:

 echo esc_attr( $city ); 

Also ist es wichtig, ob Sie ESC vor der Ausgabe auf dem Bildschirm oder bevor es gespeichert wird?

Wenn Sie es speichern, ist die Reihenfolge der Verabschiedung, Desinfektion und validation der Materie?

Behandeln Sie ESC dann zu sanieren und validieren oder sanieren, esc und sanieren. . . etc.?

Solutions Collecting From Web of "esc vor dem Speichern oder vor der Anzeige spielt es eine Rolle?"

Ja tut es. Das Escaping hängt vom Kontext ab und im schlimmsten Fall ist die Verwendung von esc_html beim direkten Schreiben in die DB nur eine Sicherheitslücke.

Auch wenn es kein Sicherheitsproblem gibt, gibt es ein theoretisches Problem. Der Benutzer hat Sie gebeten, A zu speichern, und Sie speichern B. In einfachen Fällen B ist genau, wie A in der HTML angezeigt werden sollte, aber das Leben ist selten einfach und während Sie an einer Stelle A in einer Eingabe für anzeigen möchten Sie möchten esc_attr und an anderer Stelle in einem Textfeld verwenden, für das Sie esc_html verwenden esc_html . Wenn Sie bereits A in B in der DB umgewandelt haben, ist es ein PITA, um für B zu rekonstruieren, was das Original A war, um die korrekte Escape-function darauf anzuwenden.

Faustregel: In der DB sollten Sie die Rohwerte speichern, die der Benutzer eingegeben hat (wahrscheinlich bereinigt, aber nicht maskiert). Das Entkommen sollte nur bei der Ausgabe erfolgen.

Eingaben vom Benutzer oder andere functionen, die Sie validieren und bereinigen. Zum Säubern von SQL-Strings vor der Ausführung (wichtig!) Sehen Sie sich diese Seite http://codex.wordpress.org/Data_Validation unter database an. Wenn Sie die Eingabe von einer nicht vertrauenswürdigen Quelle bereinigen möchten, dann bereinigen Sie die Eingabe unter http://codex.wordpress.org/Function_Reference/sanitize_text_field, die sich auch auf der ersten Seite unter Textknoten befindet. Jetzt können Sie SQL-Strings, die in Ihren Skripten dynamisch erstellt wurden, sicherer verwenden und sie sicher in einer database speichern. Die Sache mit esc_html ist nur für den Browser und um Symbole wie & anzuzeigen, die auch als Code gesehen und falsch angezeigt werden, nichts mehr.

Wenn Sie sicherstellen möchten, dass Sie immer die gleichen Daten verwenden, dann json_encode UNICODE, konvertieren Sie es in eine Base64-Zeichenfolge und speichern Sie es oder senden Sie es.