✅ WEB- und WordPress-Nachrichten, Themen, Plugins. Hier teilen wir Tipps und beste Website-Lösungen.

Sichere Übermittlung von WordPress-Formularen

6

Vor Jahren habe ich einen Beitrag geschrieben, in dem ich eine öffentliche Funktion geteilt habe, um festzustellen, ob der Benutzer berechtigt ist, Informationen in der WordPress-Datenbank zu speichern. Sie können das Original in all seiner gealterten Pracht (zusammen mit den soliden Kommentaren) hier sehen (es ist sogar fünf Jahre alt – wow).

Wie bei allem, was mit Programmierung zu tun hat, vergeht die Zeit, die Dinge werden verfeinert und die Dinge werden [hoffentlich] besser als zuvor.

Obwohl ich immer noch eine Variante der Funktion user_can_save (oder userCanSave) verwende und empfehle, halte ich es auch für wichtig, den Prozess der Trennung des Prozesses der Überprüfung der Anfrage zu durchlaufen.

Jetzt geht es also nicht nur darum, festzustellen, ob der Benutzer Berechtigungen hat, sondern es geht darum, die vom Client kommenden Sicherheitsinformationen zu überprüfen – sei es über einen Postback an den Server oder eine Anfrage über Ajax – und dies mit guten Programmiertechniken, die aufeinander abgestimmt sind sowohl mit WordPress als auch mit PHP.

Um es klar zu sagen, hier geht es mehr um die sichere Übermittlung von WordPress-Formularen von einer Optionsseite oder einer Einstellungsseite als beispielsweise um ein Formular, das aus einer Vorlage stammt. Das ist ein anderer Beitrag für ein anderes Mal.

Trotzdem arbeiten viele von uns daran, Anwendungen auf WordPress zu erstellen, und das erfordert Folgendes.

Sichere Übermittlung von WordPress-Formularen

In diesem Beitrag werde ich mich nicht damit befassen, die Details durchzugehen, um festzustellen, ob es sich bei etwas um eine automatische Speicherung oder eine Post-Revision handelt.

Ich werde jedoch durch den Prozess gehen, eine Funktion zu übernehmen, die für die Validierung eingehender Informationen verantwortlich ist, und zwar mit einem modernen Ansatz, der objektorientierte Praktiken und sowohl WordPress-APIs als auch PHP-Funktionen verwendet.

1 Beginnend auf einer generischen Ebene

Nehmen wir ausgehend von der grundlegenden Ebene an, dass es eine Basisklasse gibt, von der es andere Unterklassen gibt, die diese Funktion nutzen. Dies sagt uns, dass wir den geschützten Sichtbarkeitsmodifikator verwenden müssen.

Wir wissen auch, dass wir es mit einem WordPress-Nonce-Wert und einer damit verbundenen Aktion zu tun haben werden. Das bedeutet, dass die Signatur der Funktion in etwa so aussehen wird :

2 Bereinigen Sie die Daten, überprüfen Sie die Nonce

Bei allem, was auf dem Server gepostet wird, wissen wir, dass wir überprüfen müssen, ob die Daten gesetzt sind, und wenn ja, müssen wir die Informationen bereinigen.

Das bedeutet, dass wir die folgenden Funktionen benötigen:

Und wir wissen auch, dass wir die Nonce verifizieren müssen, also brauchen wir auch wp_verify_nonce.

3 Ein funktionierender erster Durchgang

Ein funktionierender erster Durchlauf dieser Funktion könnte etwa so aussehen :

Aber was ist, wenn jemand Daten teilt, die eine POST – Anforderung (im Gegensatz zu einer GET )-Anforderung gesendet haben? Dann könnten wir die Funktion so ändern, dass sie etwa so aussieht :

Und das wäre ausreichend. Aber wenn wir wirklich wollen, dass eine gegebene Funktion so rein wie möglich ist, dann könnten wir das noch weiter aufbrechen.

4 Eine Funktion für jeden Zweck

Angesichts des obigen Codes wissen wir, dass wir sowohl GET-Anforderungen als auch POST-Anforderungen verarbeiten müssen. PHP bietet eine filter_input -Funktion, die hilfreich und einfacher zu lesen ist (na ja, das ist subjektiv), aber auch mehrere Code-Qualitätsprüfungen besteht.

Darüber hinaus können wir eine einfache werksähnliche Funktion verwenden, um die Logik in zwei separate Funktionen wie diese zu unterteilen:

Sichere Übermittlung von WordPress-Formularen

Zuerst müssen wir zwei separate Funktionen schreiben – eine für eine POST-Anfrage:

Und eine für eine GET-Anfrage:

Dann können wir es in der ursprünglichen Funktion wie folgt zusammenbinden:

Eingehende Anfragen sauber verwalten

Vielleicht sieht dies angesichts des ursprünglichen Codesatzes, der gemeinsam genutzt wurde, nach einer komplizierten Methode aus, um eine einfache Lösung zu handhaben.

Das ist sicherlich möglich, besonders wenn Sie unter Zeitdruck stehen oder sich nicht so sehr darum kümmern, Dinge in die kleinstmöglichen atomaren (oder sogar testbaren) Komponenten zu zerlegen.

Aber wenn Sie objektorientierten Code mit höchster Präzision schreiben möchten, hilft Ihnen dieser Prozess vielleicht genau dabei.

Zugegeben, das ist nur mein Prozess. Ich sage nicht, dass es der Weg ist, aber es ist ein Weg. Und wenn Sie eine Alternative haben, bin ich jederzeit willkommen, mehr zu lesen und auf Twitter darüber zu diskutieren. 🙂

Aufnahmequelle: tommcfarlin.com

Diese Website verwendet Cookies, um Ihre Erfahrung zu verbessern. Wir gehen davon aus, dass Sie damit einverstanden sind, Sie können sich jedoch abmelden, wenn Sie möchten. Annehmen Weiterlesen