Springe zum Hauptinhalt
Universitäts­rechen­zentrum
Absicherung von Webformularen
Universitäts­rechen­zentrum 

Absicherung von Webformularen

Schützen Sie öffentlich erreichbare Webformulare gegen sog. CSRF-Angriffe (Cross Site Request Forgery) und „Formular-Spamming“. Dabei senden Programme automatisiert Webformulare ab, um damit unliebsame Aktionen auszulösen, z. B. E-Mails zu senden oder Datenbanken mit sinnlosen Einträgen zu füllen.

Häufig werden zum Schutz sog. Captchas verwendet, die meist jedoch nicht barrierefrei sind. Wir stellen hier einfache Varianten vor, die Sie als Webautor der TU Chemnitz zum Schutz Ihrer Webformulare verwenden können.

Gesicherte Webformulare in 3 Schritten

1. Initialisieren

Hier binden Sie den PHP-Code ein und wählen eine Methode aus. Wichtig: Unbedingt vor der tucal-Funktion seite()!

<?php
require_once('php/secform.inc');
$secform = new tucal_secform(0);     # 0, 1, oder 2
seite(__FILE__);
Folgende Schutzmethoden sind derzeit umgesetzt:
  • 0 – unsichtbares Token
  • 1 – Token und Zeitprüfung – „unsichtbar“
  • 2 – Token, Zeitprüfung und JavaScript-Checkbox: Ich bin ein Mensch – sichtbar, JavaScript erforderlich
Im Normalfall sollte die Methode 1 ausreichend sein. Alle Varianten schützen auch vor CSRF-Angriffen und verhindern das mehrfache Absenden des Formulars.

2. Geheimnis im Formular unterbringen

Geben Sie den HTML-Code, die die PHP-Funktion get_token() liefert, in Ihrem HTML-Formular aus:

<form action="mod_secform.php" method="post" class="form-horizontal">
 ...
  <?php echo $secform->get_token(); ?> 
  <button type="submit" class="btn btn-default" style="margin:1em">Absenden</button>
   </div>
</form>

3. Prüfen in der Formularauswertung

Verwenden Sie die Funktion check_token(min, max), um die Schutzmethode zu überprüfen. min, max sind Zahlenwerte in Sekunden. In diesem Zeitbereich sollte der menschliche Benutzer das Formular ausfüllen können. Die Verwendung sehen Sie im Beispiel:

<?php
  # Auswertung des Formulars
  # Zeit zum Ausfüllen des Formulars durch den Benutzer - hier:
  # mindestens 5 Sekunden, maximal 900 Sekunden = 15 Minuten
  # Verwenden Sie $secform->check_token(0, 0); um die Zeitprüfung abzuschalten
  list($ok, $reason) = $secform->check_token(5, 900);
  if ($ok) {
      # normale Formularauswertung
  } else {
      # Fehler, z. B. $reason ausgeben, und/oder einfach Formular nochmal anzeigen
      echo 'Fehler: ' . htmlspecialchars($reason);
  }

Beispiele

Antworten auf häufig gestellte Fragen

Sind diese Verfahren wirklich sicher?

Nein, absolut sichere Varianten für öffentlich zugreifbare Formulare – dazu noch barrierefreie – wird es wohl kaum geben. Die umgesetzten Methoden erfordern jedoch ein „menschliches Verhalten“ in einem realen Webbrowser:

  • 0 – Das Formular muss vorm Absenden vom Webbrowser geladen werden und kann nicht mehrfach abgesendet werden.
  • 1 – Das Formular muss zudem in einem gewissen Zeitraum ausgefüllt und abgesendet werden.
  • 2 – JavaScript muss ausgewertet werden (was bei Bots in der Regel nicht der Fall ist). Der Benutzer muss genau eine von zwei Checkboxen anklicken, wobei eine durch CSS gar nicht sichtbar ist.

Letztlich muss die Praxis zeigen, ob wir mit diesen Methoden die „Plagegeister“ abhalten. Sobald diese programmierten Automaten unsere Maßnahmen durchschauen und umgehen, wird der Schutz ausgehebelt. Dann werden wir neue Maßnahmen entwickeln.

  • Viele Personen stehen vor einem Gebäude. Kinder stehen auf einer Bühne.

    Vorfreude auf die Weihnachtszeit

    Viele Gäste besuchten am 4. Dezember 2024 den TUCweihnachtsmarkt, der nicht nur mit einem bunten Programm auf die Advents- und Weihnachtszeit einstimmte – Weihnachtsvorlesung der Chemiker war ein Höhepunkt …

  • Ein Weihnachstmann und viele junge Leuten stehen vor einer Straßenbahn.

    TUCweihnachtsmarkt öffnet seine Pforten

    Am 4. Dezember 2024 wird die Vorweihnachtszeit auf dem Campusplatz und im Hörsaalgebäude mit Musik, Unterhaltung und Leckereien eingeläutet – Unishop präsentiert erweitertes Weihnachtssortiment …

  • Kugelbild vom Campus mit Schriftzug O-Phase

    „O-Phase“ bereitet auf das Studium vor

    Orientierungsphase vom 7. bis 11. Oktober 2024 soll Erstsemester der TU Chemnitz bei ihrem Studienstart mit zahlreichen Veranstaltungen und Informationsangeboten unterstützen …

  • Logo

    Perspektiven für Open Science und die akademische Lehre

    Der vierte Tag der digitalen Hochschulbildung „TUCdigital“ am 7. November 2024 bietet Lehrenden, Studierenden, Beschäftigten aus der Verwaltung sowie Gästen Gelegenheit zum intensiven Erfahrungsaustausch über Open Science …