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

Eingabeprüfung und Escaping

Jede Eingabe als nicht vertrauenswürdig und jede Ausgabe als zu maskieren behandeln - Typumwandlung und Positivlisten in PHP, Prüfung von Ansichtsparametern und POSTs, wash in Templates für HTML und Attribute, URLs…

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/help/creators/app-creators/input-validation-and-escaping.md

On this page

This page is a translation. Read the English original

Eingabeprüfung und Escaping

Diese Seite richtet sich an Anwendungsentwickler, die Daten aus Anfragen, Importen oder APIs verarbeiten. Zwei Regeln verhindern die meisten Sicherheitsfehler: Prüfen Sie Eingaben dort, wo sie hereinkommen, und maskieren Sie Ausgaben dort, wo sie hinausgehen, im Format des Ortes, an den sie gelangen.

Inhalt

  1. Eingaben prüfen
  2. Ausgaben maskieren
  3. Kontexte und ihre Maskierung
  4. Häufige Fehler

Eingaben prüfen

EingabePrüfung
IDs und Zahlen(int), danach eine Bereichsprüfung (max( 1, min( 100, (int)$limit ) ))
Auswahlwerteeine Positivliste: in_array( $sort, array( 'name', 'published' ), true )
TextLängenbegrenzung, trim, die für das Feld erlaubten Zeichen
E-Mail, URLdie Prüfung des Datentyps oder filter_var(); bei URLs zusätzlich das Schema (nur https)
DateienTyp nach Inhalt und Größe, gespeichert über den Kernel
Weiterleitungszielenur Adressen der Website (Sichere Weiterleitungen)

Ansichtsparameter ($Params) und ungeordnete Parameter sind Zeichenketten aus der Adresse und genauso wenig vertrauenswürdig wie POST-Daten.

Ausgaben maskieren

In Templates läuft jeder Wert von Benutzern oder aus der Datenbank durch |wash:

<h1>{$item.title|wash}</h1>
<a href={$item.url|ezurl} title="{$item.title|wash}">...</a>
<div data-conf="{json_encode( hash( 'id', $item.id ) )|wash}"></div>

Ausnahmen sind Werte, die konstruktionsbedingt bereits sicheres HTML sind: $module_result.content, die Ausgabe von attribute_view_gui und die des Rich-Text-Renderings.

Kontexte und ihre Maskierung

Die Ausgabe landet inMaskieren mit
HTML-Text und Attributen|wash (Templates), htmlspecialchars( $v, ENT_QUOTES, 'UTF-8' ) (PHP)
URLs in Templates|ezurl für Pfade der Website; rawurlencode() für Teile einer URL (Templates und Design, Teil 10)
JSONjson_encode(); innerhalb eines <script type="application/json"> zusätzlich < und > ersetzen
SQLTypumwandlungen und $db->escapeString() oder Bedingungen von eZPersistentObject
Shell-Befehlenvermeiden; sonst escapeshellarg()
CSV für TabellenkalkulationenWerten, die mit =, +, -, @ beginnen, ein Präfix voranstellen (der CSV-Export des Kernels tut das)
LogzeilenZeilenumbrüche entfernen; niemals Geheimnisse protokollieren

Häufige Fehler

  • {$value} ohne |wash, weil „es nur eine Zahl ist“: Eine spätere Änderung macht Text daraus.
  • Einem versteckten Formularfeld vertrauen.
  • Eine Weiterleitung aus $_SERVER['HTTP_REFERER'] bauen.
  • Bei der Eingabe statt bei der Ausgabe maskieren (doppelte Maskierung oder gar keine bei einer neuen Ausgabe).
  • Ein JSON-Wert, der in ein Inline-Skript geschrieben wird: Verwenden Sie stattdessen einen Datenblock oder ein Attribut.

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