Ergebnis 1 bis 20 von 20

Thema: CONTAO 5.3.44: Eigenes PHP Formular: Ungültiges Anfrage-Token

  1. #1
    Contao-Fan
    Registriert seit
    11.11.2011.
    Ort
    Schwerin
    Beiträge
    724

    Standard CONTAO 5.3.44: Eigenes PHP Formular: Ungültiges Anfrage-Token

    Hallo,



    habe ein eigenes PHP Formular eigebunden und erhalte eine Fehlermeldung: Was ist das Problem? Das Request-Token konnte nicht validiert werden.

    https://www.kfv-nwm.de/termine/reservierung.html

    Im PHP Formular wurde diese Feld eingebunden:
    Code:
    <input type="hidden" name="REQUEST_TOKEN" value="{{request_token}}">
    Wenn man sich hier den Quellcode ansieht, ist dieses drin:
    Code:
    <input type="hidden" name="REQUEST_TOKEN" value="{{request_token|attr}}">

    Zum Vergleich ein CONTAO Formular:
    https://www.kfv-nwm.de/kontakt.html

    Hier sieht man im Quellcode einen Wert:
    Code:
    <input type="hidden" name="REQUEST_TOKEN" value="e66f315.Rg5BsPrQY_Cxl8cGzrjkTAR_UTisF7mCFj5w6vqut-I.EX0RgquKVbn54Kxem8CNG30sJ1LfIYi2QUoc3rCX8JQhezPTo6MKlYfSoA">


    Was habe ich übersehen?

    Vielen Dank für Hinweise.

  2. #2
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    38.315
    Partner-ID
    10107

    Standard

    Zitat Zitat von mv-soft Beitrag anzeigen
    Was habe ich übersehen?
    Den {{request_token}} Insert-Tag gibt es in Contao 5 nicht mehr.
    » sponsor me via GitHub or Revolut

  3. #3
    Contao-Fan
    Registriert seit
    11.11.2011.
    Ort
    Schwerin
    Beiträge
    724

    Standard

    Ja, in CONTAO 4 konnte ich diese Angabe noch nutzen... .


    Wie lautet nun die neue Vorgabe ? Ich hatte bereits recherchiert, doch keine Lösung gefunden:

    Code:
    {{ contao.request_token }}
    Code:
    <input type="hidden" name="REQUEST_TOKEN" value="<?= $this->requestToken ?>">

  4. #4
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    38.315
    Partner-ID
    10107

    Standard

    Wie genau hast du dieses Formular denn eingebunden?
    » sponsor me via GitHub or Revolut

  5. #5
    Contao-Fan
    Registriert seit
    11.11.2011.
    Ort
    Schwerin
    Beiträge
    724

    Standard

    Die PHP Datei mit dem Formular wurde in den Template- Ordner hochgeladen. Danach wurde ein Modul erstellt (siehe Anlage) und in einerm Artikel integriert.
    Angehängte Grafiken Angehängte Grafiken

  6. #6
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    38.315
    Partner-ID
    10107

    Standard

    Damit wirst du nicht mehr weit kommen, du wirst dieses Formular als echtes Inhaltselement umsetzen müssen.
    » sponsor me via GitHub or Revolut

  7. #7
    Contao-Fan
    Registriert seit
    11.11.2011.
    Ort
    Schwerin
    Beiträge
    724

    Standard

    Aber an dem Formular hängen Berechnungen und ein Datenbank- Zugriff. Es ist in sich funktionsfähig, läuft lokal in WAMP. Ein ähnliches Projekt läuft unter CONTAO 4.... und nun stehe ich da und habe keine Lösung ?

    Das ist ein echtes Problem für mich... .

  8. #8
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    38.315
    Partner-ID
    10107

    Standard

    Zitat Zitat von mv-soft Beitrag anzeigen
    und nun stehe ich da und habe keine Lösung ?
    Doch, die Lösung ist das als echtes Inhaltselement umzusetzen.
    » sponsor me via GitHub or Revolut

  9. #9
    Contao-Fan
    Registriert seit
    11.11.2011.
    Ort
    Schwerin
    Beiträge
    724

    Standard

    Entschuldigung.... das verstehe ich nicht.... also nicht als Modul ?

  10. #10
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    38.315
    Partner-ID
    10107

    Standard

    Modul oder Inhaltselement, ja. Aber Module sind deprecated - es gibt nur mehr Inhaltselemente in Zukunft.
    » sponsor me via GitHub or Revolut

  11. #11
    Contao-Urgestein
    Registriert seit
    24.02.2021.
    Beiträge
    1.939
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Zitat Zitat von mv-soft Beitrag anzeigen
    Aber an dem Formular hängen Berechnungen und ein Datenbank- Zugriff. Es ist in sich funktionsfähig, läuft lokal in WAMP. Ein ähnliches Projekt läuft unter CONTAO 4.... und nun stehe ich da und habe keine Lösung ?

    Das ist ein echtes Problem für mich... .
    In der Upgrade.md steht beschrieben, wie du es mit dem Request-Token machen kannst.
    https://github.com/contao/contao/blo...EST%5FTOKEN%3A

    Da du es aber über den Template include-File hack machst, musst du das Request-Token, wie in der Upgrade.md beschrieben, holen.
    Das Thema wäre nun aufgrund der Erkenntnise (eigenes Inhaltselement, Formular, Berechnungen, Datenbank-Zugriff) eines für "Entwicklerfragen".

    Letztes Jahr hatte ich mit mehreren dieser "templates/" include file php Hacks in Projekten zu tun. Ich empfehle daher, sofern du weiter den File.php include-Hack nutzen wirst, zusätzlich auf die Legacy Content-Elemente zurückstellen, damit die Fehler nicht abstrakt über das Twig-Template angezeigt werden.

    Zusätzlich solltest du dein ce_html überschreiben, damit mit Contao 5.7 nicht auch noch der Twig-Fallback greift.

    Oder richtigerweise als Inhaltselement umsetzen.

  12. #12
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    38.315
    Partner-ID
    10107

    Standard

    Zitat Zitat von zoglo Beitrag anzeigen
    In der Upgrade.md steht beschrieben, wie du es mit dem Request-Token machen kannst.
    https://github.com/contao/contao/blo...EST%5FTOKEN%3A
    Hmm, geht das auch über ein so eingebundenes Script?
    » sponsor me via GitHub or Revolut

  13. #13
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    38.315
    Partner-ID
    10107

    Standard

    Eigentlich sollte es gehen, ja. Also @mv-soft statt {{request_token}} also
    PHP-Code:
    <?= Contao\System::getContainer()->get('contao.csrf.token_manager')->getDefaultTokenValue() ?>
    » sponsor me via GitHub or Revolut

  14. #14
    Contao-Fan
    Registriert seit
    11.11.2011.
    Ort
    Schwerin
    Beiträge
    724

    Standard

    Folgendes wurde nun in das PHP Script mit dem Formular integriert:

    PHP- Bereich:
    Code:
    use Contao\System;
    $requestToken = System::getContainer()->get('contao.csrf.token_manager')->getDefaultTokenValue();
    HTML Bereich:
    Code:
    <input type="hidden" name="REQUEST_TOKEN" value="<?= $this->requestToken ?>">
    Leider immer noch das gleiche Problem, es wird kein Token generiert für das INPUT Element.

  15. #15
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    38.315
    Partner-ID
    10107

    Standard

    Wenn kein Request Token notwendig ist, wird auch keiner generiert (bzw. die Request Tokens werden auch im Nachhinein entfernt).
    » sponsor me via GitHub or Revolut

  16. #16
    Contao-Fan
    Registriert seit
    11.11.2011.
    Ort
    Schwerin
    Beiträge
    724

    Standard

    Ich wollte nun das Token deaktivieren:

    Code:
    # config/config.yml
    contao:
        csrf_protection: false # Nicht empfohlen im Live-Betrieb!
    Das führt beim Cache erneuern übder den CONTAO- Manager zu einer Fehlermeldung:
    Code:
    vendor/bin/contao-console cache:clear --no-warmup
    $ /opt/plesk/php/8.3/bin/php -q -dmax_execution_time=0 -dmemory_limit=-1 -ddisplay_errors=0 -ddisplay_startup_errors=0 -derror_reporting=0 -dallow_url_fopen=1 -ddisable_functions= -ddate.timezone=UTC /var/www/vhosts/kfv-nwm.de/httpdocs/website/vendor/contao/manager-bundle/bin/contao-console cache:clear --env=prod --no-warmup
    In ArrayNode.php line 327:
                                                                                   
      Unrecognized option "csrf_protection" under "contao". Available options are  
       "backend", "backup", "console_path", "crawl", "cron", "csp", "csrf_cookie_  
      prefix", "csrf_token_name", "editable_files", "error_level", "image", "inse  
      rt_tags", "intl", "localconfig", "locales", "mailer", "messenger", "pretty_  
      error_screens", "preview_script", "sanitizer", "search", "security", "uploa  
      d_path".                                                                     
                                                                                   
    # Process terminated with exit code 1
    # Result: General error

  17. #17
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    38.315
    Partner-ID
    10107

    Standard

    Woher hast du das?

    Und funktioniert das Formular denn nun oder nicht?
    » sponsor me via GitHub or Revolut

  18. #18
    Contao-Fan
    Registriert seit
    11.11.2011.
    Ort
    Schwerin
    Beiträge
    724

    Standard LÖSUNG

    In der PHP Datei wird das CONTAO Token ermittelt und danach als Value im input Tag korrekt ausgegeben:

    Code:
    ///// Conta 5 Anfang ///// 
    $strToken = $this->container->get('contao.csrf.token_manager')
                 ->getToken($this->container->getParameter('contao.csrf_token_name'))
                 ->getValue();
    ///// Conta 5 Ende /////

    Nun funktioniert alles.... vielen Dank für die Unterstützung.

  19. #19
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    38.315
    Partner-ID
    10107

    Standard

    Den Parameter musst du dir nicht unbedingt holen - siehe der Code oben.
    » sponsor me via GitHub or Revolut

  20. #20
    Contao-Urgestein
    Registriert seit
    24.02.2021.
    Beiträge
    1.939
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Zitat Zitat von mv-soft Beitrag anzeigen
    Ich wollte nun das Token deaktivieren:

    Code:
    # config/config.yml
    contao:
        csrf_protection: false # Nicht empfohlen im Live-Betrieb!
    [/CODE]
    Wollte nur für die Nachwelt erwähnen, dass dies keine bekannte Option ist und sehr wahrscheinlich aus einem LLM heraushalluziniert wurde.

    Als Offtopic Zusammenfassung gilt:
    Der richtige Weg ist es immer noch das Request Token über den Service generieren zu lassen oder die PHP-File Logik als Inhaltselement bereitzustellen.

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 4 (Registrierte Benutzer: 0, Gäste: 4)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •