Skip to the content
Documentation
Help Start
Reading in:
  • German: 9,059 of 9,059 pages
About the help in other languages
All help pages

Formulare, CSRF und HTTP-Eingaben

Formulare in Ansichten sicher verarbeiten - Eingaben mit eZHTTPTool und Modulaktionen lesen, Formular-Tokens aus ezformtoken, POST-Redirect-GET, Validierungsmeldungen, sichere Weiterleitungen, Uploads mit eZHTTPFile und…

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/help/creators/app-creators/forms-csrf-and-http-input.md

On this page

This page is a translation. Read the English original

Formulare, CSRF und HTTP-Eingaben

Diese Seite richtet sich an Anwendungsentwickler, deren Ansichten Eingaben entgegennehmen. Drei Regeln: Lesen Sie Eingaben über die Hilfsklassen des Kernels, lassen Sie jeden POST durch das Formular-Token schützen, und prüfen Sie alles, bevor Sie es verwenden.

Inhalt

  1. Eingaben lesen
  2. Formular-Tokens
  3. POST, Weiterleitung, GET
  4. Validierungsfehler anzeigen
  5. Uploads
  6. POSTs aus Skripten

Eingaben lesen

$http = eZHTTPTool::instance();
if ( $http->hasPostVariable( 'Title' ) )
    $title = trim( (string)$http->postVariable( 'Title' ) );
$page = $http->hasGetVariable( 'page' ) ? max( 1, (int)$http->getVariable( 'page' ) ) : 1;

Für Schaltflächen deklarieren Sie Aktionen in module.php und verwenden $Module->isCurrentAction() und actionParameter() (Eigene Module und Ansichten). Lesen Sie niemals $_POST oder $_GET direkt; unter Velocity bereitet der Kernel sie für jede Anfrage auf.

Formular-Tokens

ezformtoken fügt jedem Formular mit method="post" in der Ausgabe ein verstecktes Token hinzu und weist POST-Anfragen ohne gültiges Token ab: mit einem 403 und einer Zeile in var/log/warning.log (site.ini [HTMLForms]). Ihre Formulare sind geschützt, solange sie von Templates gerendert werden und an dieselbe Website senden. Setzen Sie [HTMLForms] Secret für jede Installation eigens. Ist ein Token abgelaufen, sehen Besucher die Seite für abgelaufene Formulare (Seite für abgelaufene Formulare).

JavaScript, das mit fetch() sendet, muss das Token ebenfalls mitschicken; lesen Sie es aus der Seite (die Skripte von ezjscore und der Administration tun das), statt die Prüfung abzuschalten.

POST, Weiterleitung, GET

Leiten Sie nach einem erfolgreichen POST auf eine GET-Seite weiter, damit ein Neuladen die Aktion nicht wiederholt:

if ( $Module->isCurrentAction( 'Store' ) && $errors === array() )
{
    $item->store();
    return $Module->redirectTo( '/expdemo/item/' . (int)$item->attribute( 'id' ) );
}

Weiterleitungen auf eine Adresse aus der Anfrage (eine RedirectURI) müssen auf der Website bleiben; verwenden Sie die Prüfungen des Kernels für sichere Weiterleitungen (Sichere Weiterleitungen).

Validierungsfehler anzeigen

Sammeln Sie Fehler je Feld, rendern Sie das Formular mit den vom Benutzer eingegebenen Werten erneut, und zeigen Sie die Fehler neben den Feldern sowie in einer Zusammenfassung oben an:

$tpl->setVariable( 'errors', $errors );   // array( 'title' => 'Enter a title' )
$tpl->setVariable( 'values', array( 'title' => $title ) );

Uploads

if ( eZHTTPFile::canFetch( 'File' ) )
{
    $file = eZHTTPFile::fetch( 'File' );
    // check $file->attribute( 'mime_type' ) and size against an allow list before storing
}

Für Inhalte legen Sie besser ein Objekt der Klasse file oder image an, das Speicherung, Clustering und die Bereinigung von SVG übernimmt (Inhalte im Code anlegen).

POSTs aus Skripten

Maschinelle Clients verwenden keine HTML-Formulare: Geben Sie ihnen die REST-API mit API-Schlüsseln oder OAuth oder expservices mit Tokens, die statt Formular-Tokens ihre eigene Authentifizierung haben (Die REST-API, OAuth und API-Schlüssel).

Verwandte Seiten

Werden Sie Exponential-Partner

Partner teilen ihre Informationen, stellen Mittel bereit, geben Beiträge zurück und entwickeln die Produkte mit uns, und so wächst Exponential. Eine Partner-Website und ein Dashboard sind für Mitte 2027 geplant: Werden Sie noch heute Partner, damit wir schneller wachsen und neue Funktionen früher liefern.

Something wrong on this page? Report an error

Documentation license

This documentation is free documentation, licensed under the GNU Free Documentation License 1.3 or later.

Exponential Copyright © 1998-2026 Exponential Foundation and 7x