Bundesamt für Sicherheit in der Informationstechnik

M 4.404 Sicherer Entwurf der Logik von Webanwendungen

Verantwortlich für Initiierung: Fachabteilung, IT-Sicherheitsbeauftragter, Verantwortliche der einzelnen Anwendungen

Verantwortlich für Umsetzung: Entwickler, Tester

Webanwendungen bilden komplexe Geschäftsprozesse ab, die über das bloße Anzeigen von einzelnen Webseiten hinausgehen. Beim technischen Entwurf dieser Prozesse muss darauf geachtet werden, dass die umgesetzte Anwendungslogik nicht missbräuchlich verwendet werden kann. So soll beispielsweise nicht aus einem vorgesehenen Prozess der Webanwendung ausgebrochen und somit der Ablauf des Prozesses von außen gesteuert werden können.

Die Anforderungen an die abgebildete Geschäftslogik müssen exakt erfasst und korrekt umgesetzt sein, sodass ausschließlich beabsichtigte und vorgesehene Aktionen durchgeführt werden können. Ein abweichendes Verhalten muss zurückgewiesen werden. Ist beispielsweise eine Empfehlungsfunktion der Webanwendung ausschließlich zum Versand von Artikelempfehlungen gedacht, sollte berücksichtigt werden, dass diese Funktion auch missbraucht werden kann, um SPAM-E-Mails zu versenden. Wird in diesem Beispiel der Empfehlungstext fest vorgegeben, so ist der Versand von SPAM über diese Funktion nicht möglich. Des weiteren ist auch zu prüfen, ob Fehler in der Geschäftslogik durch zwei gleichzeitige Sessions (concurrent sessions) auftreten können (race conditions).

Bei der Konzeption der Webanwendung sollten daher alle Funktionen anhand von Anwendungsfällen (Use Cases) dokumentiert werden. Dabei sollte erfasst werden, für welche Zwecke die Funktionen verwendet werden sollen und wie eine missbräuchliche Nutzung vermieden werden kann.

Wird die Webanwendung aus irgendeinem Grund abgebrochen, so muss die Logik sicherstellen, dass die Webanwendung wieder in einen konsistenten Zustand kommt (roll back).

Interaktive Funktionen in Web-Angeboten können auch durch aktive Inhalte umgesetzt werden, die auf dem Client-System ausgeführt werden ( z. B. per JavaScript). Oft ist es auch möglich, diese Funktionalitäten mit dynamischen oder statischen Inhalten bereitzustellen. Da die Nutzung von aktiven Inhalten aus Sicherheitsgründen auf den Client-Systemen häufig deaktiviert ist, wird empfohlen, bei der Konzeption der Webanwendung auf die Verwendung aktiver Inhalte zu verzichten und die Anwendungslogik rein serverseitig zu realisieren.

Interaktive Funktionen in Webanwendungen können auf unterschiedliche Weise realisiert werden: Server-seitig oder Client-seitig. Da der Client nicht unter der Kontrolle der Webanwendung steht, kann nicht ausgeschlossen werden, dass dieser missbräuchlich benutzt wird. Gerade aktive Inhalte wie JavaScript oder ActiveX wurden und werden immer wieder ausgenutzt, Webanwendungen und die von ihnen verwalteten Informationen anzugreifen. Aus Sicherheitsüberlegungen empfiehlt es sich deshalb, aktive Inhalte Server-seitig umzusetzen oder, wo dies möglich ist, auf sie zu verzichten.

Ist die Nutzung aktiver Inhalte erforderlich, sind folgende Punkte zu beachten:

  • Es sollte sichergestellt sein, dass die Webanwendung auch dann verwendet werden kann, wenn die Ausführung aktiver Inhalte im Browser deaktiviert ist.
  • Für aktive Inhalte sollte nach Möglichkeit nachvollziehbar sein, aus welcher Quelle sie stammen, damit eine wirksame Prüfung im Client vorgenommen werden kann. Dies kann beispielsweise durch die Signatur von ActiveX-Komponenten erreicht werden.
  • Ist die Serialisierung und die dynamische Erzeugung von XML -Daten bei der Verwendung von Ajax nicht zu vermeiden, sollte nach Möglichkeit auf Frameworks zurückgegriffen werden.
  • Bei der Verwendung von JavaScript sollte auf den Funktionsaufruf eval() verzichtet werden.
  • Benutzt die Webanwendung JSON für den Datenaustausch, so sind ausschließlich Objekte als Top-Level-Elemente zu verwenden.

Beispiele:

  • Eine Webanwendung authentisiert die Benutzer in mehreren, aufeinanderfolgenden Schritten. Die Benutzer müssen im ersten Schritt Benutzername und Passwort und im zweiten Schritt ein Authentisierungstoken eingeben. Dabei sollte der erste Schritt nicht übersprungen werden können, damit sichergestellt ist, dass alle Authentisierungsmerkmale eingegeben werden. Im letzten Schritt für die endgültige Authentisierung muss dann eine erneute Prüfung aller Authentisierungsmerkmale durchgeführt werden.
  • Bereits in der Konzeptionsphase einer Banking-Anwendung muss bedacht werden, dass ein Benutzer auch negative Beträge in ein Überweisungsformular eintragen kann. Die Webanwendung muss dabei sicherstellen, dass hierdurch nicht die Logik des Überweisungsformulars umgekehrt und keine unvorgesehene Gutschrift ausgelöst wird.

Prüffragen:

  • Sind für die Funktionen der Webanwendung Anwendungsfälle (Use Cases) dokumentiert?

  • Berücksichtigen die dokumentierten Anwendungsfälle der Webanwendung die missbräuchliche Nutzung der Funktionen?

  • Wurde geprüft, ob auf die Verwendung von aktiven Inhalten bei Webanwendungen verzichtet werden kann?

  • Wurde der Einsatz von aktiven Inhalten auf das Notwendige beschränkt?

Stand: 13. EL Stand 2013

Hinweis zur Verwendung von Cookies

Um unsere Webseite für Sie optimal zu gestalten und fortlaufend verbessern zu können, verwenden wir Cookies. Durch die weitere Nutzung der Webseite stimmen Sie der Verwendung von Cookies zu. Weitere Informationen hierzu erhalten Sie in unserer Datenschutzerklärung.

OK