CF7 bei deaktivierter REST-API

  • Contact Form 7 v4.9 ist heute erschienen. Leider immer noch mit dem gleichen Problem. Es wird sich also nicht mehr ändern. Entweder REST-API öffnen, was ich für einen großen Fehler halte, oder ein anderes Plugin suchen. Schade ....

    Das Geheimnis des Könnens liegt im Wollen!
    [size=12]Bitte keine Hilfegesuche per PN (auch keine "privaten" Links). Das ist ein öffentliches Forum.[/SIZE]

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Imho ist Euer Denkansatz falsch. Die REST API ist nun wesentlicher Bestandteil (Core) von WordPress und Matt Mullenweg selbst war es, der die Entwickler (Plugins/Themes) dazu angeregt (um nicht zu sagen aufgefordert) hat, die REST API zu nutzen. Ob es klug ist ein Plugin ausschließlich auf die REST API zu stützen sei dahin gestellt und ist dem Entwickler überlassen. Das ändert in keinem Fall etwas daran, dass eine Deaktivierung der API ebenso wie (früher) der XML-RPC Schnittstelle zu Verlusten in der Funktionalität von WordPress führt.

    Die Frage ist warum will man die REST-API still legen? Dann kann man überlegen ob es Alternativen zum Erreichen des Ziels gibt. Ich war noch nie ein Freund von CF7, würde aber per se nicht so weit gehen CF7 ob der REST-API Thematik an den Pranger zu stellen. Mit Ninja Forms oder Formidable stehen hervorragende Plugins zur Verfügung, suchen muss man also nicht wirklich.

    WordPress ist "frei" wie in Freiheit es zu nutzen, aber nicht im Sinne von Freibier. Wer also glaubt man bekommt rund um WordPress alles kostenlos, der irrt. Hilfe ist ein Geschenk für das man sich bedankt, dafür gibt es den 'Gefällt mir' Button. Wer das nicht kann und sich selbst nicht zu helfen weiss, muss sich bezahlte Unterstützung suchen.

  • Mit aktivierter REST-API ist u. a. wirklich jeder in der Lage vorhandene Usernamen auszulesen. Was soll daran gut sein? Warum nutzt ein Kontaktformular die REST-API? Ich habe z. B. die REST-API nur gegen anonymen Zugriff gesperrt. Sollte an sich kein Problem sein. Klar führt das zu Verlusten, deshalb suche ich jetzt halt Alternativen.

    Fakt ist es, dass Angreifer schon lange nicht mehr über den normalen Login gehen. Warum soll man also seine Hintertüren weit offen stehen lassen? Ich bin offen für Alternativen um das Ziel zu erreichen, dass nicht jeder Hinz und Kunz meine Daten einsehen kann. Kannst du mir Alternativen zeigen?

    Das Geheimnis des Könnens liegt im Wollen!
    [size=12]Bitte keine Hilfegesuche per PN (auch keine "privaten" Links). Das ist ein öffentliches Forum.[/SIZE]

  • Die Frage ist warum will man die REST-API still legen?

    Vielen gefällt die Ausgabe der Benutzernamen über die REST-API via /wp-json/wp/v2/users nicht so sehr. Das wird dann oft (wie auch auf Deinem Website?) durch ein generelles Abschalten der REST-API "behoben",

    Das führt dann wiederum (u.a.) zu den aktuellen Effekten mit CF7 oder anderen Plugins mit REST-API Endpoints, wobei natürlich auch das magelhafte Error-Handling bei CF7 zu Unsicherheiten bzgl. der Ursache beiträgt, da sich zig. Probleme einfach nur durch "Sende-Icon dreht sich endlos" zeigen, anstelle im Client-JavaScript die HTTP-Header Codes der Antwort sauber auszuwerten und entsp. zu reagieren.

    Falls es Mitlesern nicht bekannt sein sollte: Seit einiger Zeit können auch diverse "Sicherheits"-Plugins wie WordFence, iThemes o.ä. nur diese Ausgabe der Benutzer deaktivieren und den Rest aktiv lassen, mehr dazu z.B. hier.

    Einmal editiert, zuletzt von b3317133 (18. August 2017 um 09:58)

  • Vielen Dank für die Antworten hier. Vielleicht bringen die mich ein Stück weiter. Habe jetzt folgenden Code gefunden und werde das mal testen:

    PHP
    add_filter( 'rest_endpoints', function( $endpoints ){
        if ( isset( $endpoints['/wp/v2/users'] ) ) {
            unset( $endpoints['/wp/v2/users'] );
        }
        if ( isset( $endpoints['/wp/v2/users/(?P<id>[\d]+)'] ) ) {
            unset( $endpoints['/wp/v2/users/(?P<id>[\d]+)'] );
        }
        return $endpoints;
    });


    Quelle: https://wordpress.stackexchange.com/questions/2523…-exposing-users

    Das Geheimnis des Könnens liegt im Wollen!
    [size=12]Bitte keine Hilfegesuche per PN (auch keine "privaten" Links). Das ist ein öffentliches Forum.[/SIZE]

  • Die REST API ist nun wesentlicher Bestandteil (Core) von WordPress und Matt Mullenweg selbst war es, der die Entwickler (Plugins/Themes) dazu angeregt (um nicht zu sagen aufgefordert) hat, die REST API zu nutzen.

    Die alte Diskussion, ob WordPress Matt Mullenweg/Automattic oder ein Community-Projekt ist. Wenn Matt Mullenweg es angeregt hat, sollte das auch zum Denken anregen. ;-)

  • Falls es Mitlesern nicht bekannt sein sollte: Seit einiger Zeit können auch diverse "Sicherheits"-Plugins wie WordFence, iThemes o.ä. nur diese Ausgabe der Benutzer deaktivieren und den Rest aktiv lassen, mehr dazu z.B. hier.

    Danke für den Link. Das war mir nicht bekannt. Nur fragt sich, wie lange so etwas dann auch zur Standard-Version beispielsweise von WordFence gehört. Ein Grund das Plugin zu verwenden, war beispielsweise das Caching, das plötzlich nicht mehr unterstützt worden ist.

  • Vielen Dank für die Antworten hier. Vielleicht bringen die mich ein Stück weiter. Habe jetzt folgenden Code gefunden und werde das mal testen:

    PHP
    add_filter( 'rest_endpoints', function( $endpoints ){
        if ( isset( $endpoints['/wp/v2/users'] ) ) {
            unset( $endpoints['/wp/v2/users'] );
        }
        if ( isset( $endpoints['/wp/v2/users/(?P<id>[\d]+)'] ) ) {
            unset( $endpoints['/wp/v2/users/(?P<id>[\d]+)'] );
        }
        return $endpoints;
    });


    Quelle: https://wordpress.stackexchange.com/questions/2523…-exposing-users

    Vgl. dazu auch.

    https://wordpress.org/support/topic/…use-of-rest-api

  • REST APIs gehören heute zu jeder vernünftigen Applikation. WordPress macht da keine Ausnahme. Niemand behauptet die REST API wäre ausgereift und gerade das Thema Authentifizierung wird immer wieder heiß diskutiert. Jeder ist im Übrigen herzlich eingeladen im Slack in den jeweiligen Kanälen mit zu diskutieren. Auch ich bin ein Vertreter der Position, dass anonyme Anfragen an die API explizit frei gegeben werden sollten, mit Ausnahme der Anfragen die zum gleichen Ergebnis führen wie ein Webseitenaufruf. D.h. Posts und Pages soll man anonym erreichen können.

    In der Zwischenzeit gibt es zahlreiche Filter die man verwenden kann. Das Entfernen von Endpunkten, wie oben dargestellt, ist eine Möglichkeit. Allerdings steht der Endpunkt dann auch nicht mehr für Anwendungen zur Verfügung. Besser ist das gezielte Filtern der Anfragen mit eigenen Bedingungen, wie z.B.

    Code
    add_filter( 'rest_request_before_callbacks', 'rest_users_endpoint_permission', 10, 3 );
    function rest_users_endpoint_permission( $response, $handler, $request ){
        $route = $request->get_route();
        if( '/wp/v2/users' == $route && empty( $request['roles'] ) ) {
            $response = new WP_Error( 'rest_forbidden', __( 'Sorry, you are not allowed to do that.' ), array( 'status' => 403 ) );
        }
    
    
        return $response;
    }

    Das Bedingungswerk kann man dann beliebig erweitern. Man kann auch nur Anfragen zulassen die bestimmte Parameter enthalten oder von bestimmten Hosts kommen.

    WordPress ist "frei" wie in Freiheit es zu nutzen, aber nicht im Sinne von Freibier. Wer also glaubt man bekommt rund um WordPress alles kostenlos, der irrt. Hilfe ist ein Geschenk für das man sich bedankt, dafür gibt es den 'Gefällt mir' Button. Wer das nicht kann und sich selbst nicht zu helfen weiss, muss sich bezahlte Unterstützung suchen.

  • Bei einem Filter wie diesem sollte man wissen, dass die $route nicht case-sensitive ist, d.h. der in #29 gepostete Filter lässt sich durch z.B. ein grosses U in users o.ä. umgehen.

    [FONT=courier new]/wp-json/wp/v2/users[/FONT] -> forbidden

    [FONT=courier new]/wp-json/wp/v2/Users[/FONT] -> Benutzerliste

    Einmal editiert, zuletzt von b3317133 (18. August 2017 um 15:32)

  • Bei einem Filter wie diesem sollte man wissen, dass die $route nicht case-sensitive ist, d.h. der in #29 gepostete Filter lässt sich durch z.B. ein grosses U in users o.ä. umgehen.

    Korrekt! Deswegen muss natürlich ein Sanitizing statt finden, ebenso wie die Erweiterung um zusätzliche Endpoints.

    WordPress ist "frei" wie in Freiheit es zu nutzen, aber nicht im Sinne von Freibier. Wer also glaubt man bekommt rund um WordPress alles kostenlos, der irrt. Hilfe ist ein Geschenk für das man sich bedankt, dafür gibt es den 'Gefällt mir' Button. Wer das nicht kann und sich selbst nicht zu helfen weiss, muss sich bezahlte Unterstützung suchen.

  • REST APIs gehören heute zu jeder vernünftigen Applikation. WordPress macht da keine Ausnahme. Niemand behauptet die REST API wäre ausgereift und gerade das Thema Authentifizierung wird immer wieder heiß diskutiert. Jeder ist im Übrigen herzlich eingeladen im Slack in den jeweiligen Kanälen mit zu diskutieren.

    Das wäre dann auch ein klares Statement, das etwa so lauten müsste: [COLOR=#ff0000]Leute, lasst die Finger von WordPress für DIY-Websites![/COLOR]

    Kann man so sehen. Denn ich vermute, dass ein Grossteil der User dieses Forums nicht wissen, was die REST API oder Slack ist. ;-)

  • Das wäre dann auch ein klares Statement, das etwa so lauten müsste: [COLOR=#ff0000]Leute, lasst die Finger von WordPress für DIY-Websites![/COLOR]

    Kann man so sehen. Denn ich vermute, dass ein Grossteil der User dieses Forums nicht wissen, was die REST API oder Slack ist. ;-)

    Man könnte auch sagen "Leute hört auf zu atmen" weil die Luft voller Stickoxyde ist und die Mehrheit keine Ahnung hat was das bedeutet. Natürlich macht es nur für Fachkundige Sinn an der Diskussion teilzunehmen. Sie besitzen die notwendigen Kenntnisse und Werkzeuge. Die Teilnehmer in diesem Thread scheinen alle Fachkundig zu sein. Also weniger Polemik und mehr konstruktive Vorschläge.

    WordPress ist "frei" wie in Freiheit es zu nutzen, aber nicht im Sinne von Freibier. Wer also glaubt man bekommt rund um WordPress alles kostenlos, der irrt. Hilfe ist ein Geschenk für das man sich bedankt, dafür gibt es den 'Gefällt mir' Button. Wer das nicht kann und sich selbst nicht zu helfen weiss, muss sich bezahlte Unterstützung suchen.

  • Was haben Sicherheitsprobleme mit Polemik zu tun?

    Gar nichts. Es geht um Deine polemische Aussage, die sich nicht auf ein Sicherheitsproblem bezieht. Es geht hier rein um den Wunsch etwas nicht abrufen zu lassen, was standardmäßig abrufbar ist und schon immer war - auch vor der API.

    WordPress ist "frei" wie in Freiheit es zu nutzen, aber nicht im Sinne von Freibier. Wer also glaubt man bekommt rund um WordPress alles kostenlos, der irrt. Hilfe ist ein Geschenk für das man sich bedankt, dafür gibt es den 'Gefällt mir' Button. Wer das nicht kann und sich selbst nicht zu helfen weiss, muss sich bezahlte Unterstützung suchen.

  • Also, alles Deppen, die in diesem Thread diskutieren... Muss so sein, war immer schon so, und überhaupt Matt Mullenweg will es so.

    Was die REST API mit einem Formular zu tun hat, kann/will allerdings nicht einmal der Entwickler des Plugins erklären.

    Für mich ist klar: Contact Form 7 wird nicht mehr verwendet.

  • Also, alles Deppen, die in diesem Thread diskutieren... Muss so sein, war immer schon so, und überhaupt Matt Mullenweg will es so.
    Was die REST API mit einem Formular zu tun hat, kann/will allerdings nicht einmal der Entwickler des Plugins erklären.

    Q.E.D wieder Polemik. Nur weil Du etwas nicht verstehst, bedeutet das nicht, dass es schlecht ist. Und Du musst es auch gar nicht verstehen. Die REST API erweitert die Möglichkeiten der Interaktion mit WordPress für Entwickler. Es geht eben schneller direkt mit z.B. React oder VueJS auf Informationen zurückzugreifen als mittels jQuery und PHP (AJAX). Wenn Du Dich für die Entwicklung interessiert empfehle ich die Seite von Paul Underwood. Ansonsten empfehle ich Dieter Nuhr.

    WordPress ist "frei" wie in Freiheit es zu nutzen, aber nicht im Sinne von Freibier. Wer also glaubt man bekommt rund um WordPress alles kostenlos, der irrt. Hilfe ist ein Geschenk für das man sich bedankt, dafür gibt es den 'Gefällt mir' Button. Wer das nicht kann und sich selbst nicht zu helfen weiss, muss sich bezahlte Unterstützung suchen.

  • Für alle, die sich noch inhaltlich für das Thema interessieren, hier ein ganz neues Plugin:

    https://wordpress.org/plugins/jailbreak-disable-json-api/

    Ich freu mich auf die vielen Hilferufe der Anwender. 85% der installierten WordPress Seiten nutzen derzeit kein PHP 7.

    WordPress ist "frei" wie in Freiheit es zu nutzen, aber nicht im Sinne von Freibier. Wer also glaubt man bekommt rund um WordPress alles kostenlos, der irrt. Hilfe ist ein Geschenk für das man sich bedankt, dafür gibt es den 'Gefällt mir' Button. Wer das nicht kann und sich selbst nicht zu helfen weiss, muss sich bezahlte Unterstützung suchen.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!