Wie sicher / bereinigt ist wp_insert_posts ()?

13

Im Codex für wp_insert_post () heißt es, dass diese Funktion "... Variablen bereinigt , einige Überprüfungen durchführt, fehlende Variablen wie Datum / Uhrzeit usw. ausfüllt" (BEARBEITEN: Ich habe den Codex-Eintrag mit einem robusteren Beispiel aktualisiert das beinhaltet Sicherheit sowie Post-Meta und Kategoriezuweisung)

Ich frage mich nur, ob ich eine weitere Desinfektion durchführen muss, um XSS-Hacks und dergleichen zu verhindern, oder ob über die Funktion genug getan wird.

Um ehrlich zu sein, habe ich die Funktion in core durchgesehen und beispielsweise auf post_content keine wp_kses () - oder andere bereinigungsmaßnahmen gefunden, also bin ich ein wenig besorgt. Alles, was ich sehen kann, ist strip_deep () für die Daten.

Soll ich also wp_kses () oder etwas anderes ausführen, wenn ich meine Argumente für wp_insert_post () erstelle?

Was ist die beste Vorgehensweise hier? Der Codex ist in Bezug auf Sicherheit in seinem Beispiel ziemlich unbekümmert.

Vielen Dank

Tom Auger
quelle
2
Es verhindert nur die SQL-Injection. Wenn Sie kses für den Inhalt ausführen möchten, müssen Sie dies selbst tun. WP kann nicht erraten, welcher HTML-Code entfernt werden soll. Was ist, wenn der Beitrag von einem Administrator gesendet wird und er einen darin einfügen möchte <script>?
Onetrickpony
Okay, gut zu wissen. wp_kses_post () auf alles und wp_kses_title () auf den Titel!
Tom Auger
Der Codex wurde aktualisiert, um ein Beispiel für die Datenüberprüfung und wp_insert_posts () anzuzeigen.
Tom Auger

Antworten:

11

Du musst nichts tun.

Beim Laden von WP:

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

Später:

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

Ähnliches gilt für Beitragstitel, Kommentartexte usw.

Fazit: wp_insert_post () ist sehr bereinigt. :)

scribu
quelle
Vielen Dank an Scribu für diese Korrektur - definitiv ein besserer Weg! Ich wünschte, Sie hätten nicht das gesamte Codefragment verschrottet, da dies auch ein gutes Beispiel für andere Aspekte der Verwendung von wp_insert_post () ist, die im Hauptbeispiel nicht behandelt werden.
Tom Auger
Ja, ich fühlte mich auch irgendwie schlecht. Es lag jedoch außerhalb des Bereichs von wp_insert_post (). Ich denke, ein separates Tutorial von oben nach unten wäre besser.
Scribu
Antwort und Codex ebenfalls aktualisiert.
Scribu
lol @ neueste Bearbeitung. Manchmal muss man etwas graben, um das gesamte Gold zu finden, das bereits im Kern vergraben ist :) Ich habe den Faden verloren, als ich ihn zurückverfolgt habe. Sieht so aus, als wärst du ein besserer Mensch als ich! Vielen Dank, dass Sie dabei bleiben und den Codex aktualisieren.
Tom Auger