Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Geleitwort des Fachgutachters
Vorwort
1 Einleitung
2 Einführung in eZ Components
3 Die Applikationsbasis
4 Fehlerbehandlung und Debugging
5 Konfiguration
6 Datenbankanbindung
7 ORM mit PersistentObject
8 Template
9 Übersetzung
10 Benutzereingaben validieren
11 Authentifizierung
12 Bildverarbeitung
13 Archive und Dateien
14 Mail
15 Logging
16 Diagramme
17 Feeds und Caching
18 Setup
A Inhalt der Buch-CD
Stichwort

Download:
- ZIP, ca. 2,7 MB
Ihre Meinung?

Spacer
<< zurück
eZ Components von Tobias Schlitt, Kore Nordmann
Das Entwickler-Handbuch
Buch: eZ Components

eZ Components
geb., mit CD
454 S., 39,90 Euro
Galileo Computing
ISBN 978-3-8362-1073-7
Pfeil 8 Template
Pfeil 8.1 Template-Komponente
Pfeil 8.2 Cross-Site-Scripting
Pfeil 8.2.1 Ausgabe-Kontext in der Template-Komponente
Pfeil 8.3 Integration in das Blog
Pfeil 8.3.1 Initialisierung der Template-Komponente
Pfeil 8.3.2 Übergabe von Inhalten an das Template
Pfeil 8.3.3 Wichtige Variablen
Pfeil 8.3.4 Ausgabe
Pfeil 8.3.5 Template-Struktur im Blog
Pfeil 8.3.6 Das pagelayout-Template
Pfeil 8.3.7 Einbinden von Modul-Templates in die Applikation
Pfeil 8.3.8 Liste der Blog-Einträge
Pfeil 8.3.9 Vollansicht eines Blog-Eintrags
Pfeil 8.3.10 Gebietsabhängiges Datum
Pfeil 8.4 Weitere Möglichkeiten der Template-Komponente
Pfeil 8.4.1 Rückgaben verarbeiten
Pfeil 8.4.2 Eigene Template-Blöcke definieren
Pfeil 8.5 Fazit


Galileo Computing - Zum Seitenanfang

8.2 Cross-Site-Scripting Zur nächsten ÜberschriftZur vorigen Überschrift

Bei der Ausgabe von Inhalten muss ein weiterer populärer Angriffspunkt auf Webapplikationen beachtet werden. Cross-Site-Scripting, oft als XSS abgekürzt, bezeichnet das Einschleusen von aktiven Inhalten in einen vertrauenswürdigen Kontext. Nicht autorisierte Besucher einer Webseite sollte es nicht möglich sein, aktive Inhalte wie ECMAScript in die eigene Webseite einzubinden. Wenn andere Besucher die Webseite besuchen und diese als vertrauenswürdig einstufen, erwarten sie nicht, dass fremde Skripte ausgeführt werden, deren Wirkung nicht einschätzbar ist.


ECMAScript

JavaScript, 1995 von Netscape und Sun so benannt, um dem damaligen Java-Hype Tribut zu zollen, hat lediglich syntaktische Ähnlichkeit mit Java. Unter dem Namen ECMAScript wurde die prototypbasierte Sprache von der ECMA International standardisiert.[http://www.ecma-international.org/] Eingesetzt wird diese Sprache nicht mehr nur als JavaScript eingebettet in HTML, sondern auch als ActionScript in Flash.


Auf den ersten Blick erscheint es nicht besonders gefährlich, fremdes ECMAScript auszuführen, doch lässt sich darüber mit Hilfe der DOM-Funktionen die Webseite manipulieren, Cookies auslesen und fremde Inhalte einbinden. Neben dem Ausspähen privater Daten ist es mit XSS-Lücken auf mehreren Webseiten möglich, gegenseitig referenzierende Nachrichten in verschiedenen Portalen zu platzieren, und damit das Vertrauen des Besuchers in die Authentizität der eingeschleusten Nachrichten noch weiter zu erhöhen. Auf solche Art platzierte Nachrichten, die von vielen Besuchern gelesen werden, können massive Auswirkungen auf die Reputation einzelner Institutionen oder wirtschaftliche Faktoren haben.

Häufig werden eingebettete aktive Inhalte wie ECMAScript auch eingesetzt, um Aktionen auf einer Webseite als eingeloggter Besucher auszuführen. So wäre zum Beispiel ein Skript denkbar, das in einem Administrations-Interface aus dem Kontext des angemeldeten Administrators eine URL aufruft, die dem Angreifer, der das Skript eingebettet hat, mehr Rechte auf der Webseite zuweist.

XSS kann eine massive Bedrohung sein, die bei der Entwicklung beachtet werden muss. Wenn PHP als Template-Sprache zur Generierung von (X)HTML verwendet wird, reicht die Anwendung der PHP-Funktion htmlspecialchars() aus, um vor der Einbettung aktiver Inhalte zu schützen, da sämtliche Zeichen, die für den Interpreter eine nicht-textuelle Bedeutung haben, maskiert werden. Zur Ausgabe einer Variablen $content ist dann minimal der folgende Codeabschnitt zu verwenden.

<?php echo htmlspecialchars( $content ); ?>

Falls die Maskierung nur einer einzigen Variable in der Ausgabe vergessen und von dem Angreifer gefunden wird, ist die Seite durch XSS angreifbar. Gerade von den üblichen Autoren von Templates, den Designern, ist nicht zu erwarten, dass sie diesen Angriffspunkt in ihrer Arbeit ständig berücksichtigen. Bei erhöhter Komplexität der Ausgabelogik ist es außerdem nicht einfach automatisiert sicherzustellen, dass alle ausgegebenen Variablen korrekt maskiert werden.

Auch wenn gewöhnlich nur Eingaben von Benutzern Schadcode enthalten können, und bei applikationseigenen Zeichenketten meistens von ungefährlichen Texten ausgegangen werden kann, ist es besonders für einen Designer schwer festzustellen, auf welche Variablen das zutrifft. So wissen Sie, dass die im $_SERVER-Array enthaltenen Werte wie PHP_SELF Schadcode enthalten können, oder selbst statische Texte, die nur über das Administrations-Interface Ihrer Anwendung zu ändern sind, kompromittiert sein könnten. Aus diesem Grunde ist es generell sinnvoll, alle Zeichenketten – außer explizit angegebenen – zu maskieren.


Galileo Computing - Zum Seitenanfang

8.2.1 Ausgabe-Kontext in der Template-Komponente topZur vorigen Überschrift

Um dem Problem nicht-maskierter Ausgaben strukturell vorzubeugen, kennt die Template-Komponente Ausgabe-Kontexte. Der Kontext definiert sich aus dem Zielformat des Templates, üblicherweise (X)HTML. Jedes Ausgabeformat hat spezielle Zeichen, die aktive oder anderweitig problematische Inhalte einleiten können. Aus diesem Grund ist es dem Entwickler möglich, spezifische Kontexte zu verwenden oder eigene Kontexte zu definieren. Die Ausgabe einer Variablen $content unter Berücksichtigung der Maskierung gefährlicher Zeichen gestaltet sich mit der Template-Komponente, wie im folgendem Beispiel gezeigt.

{$content}

Template-Code wird in der Template-Komponente durch geschweifte Klammern eingeschlossen. Die Rückgabe eines Ausdrucks wird nach der kontextsensitiven Maskierung ausgegeben, sodass ein einfacher Ausdruck wie die allein stehende Variable zu ihrer Ausgabe führt.

Für Designer ist es durch die kurze Schreibweise nicht nur einfacher und schneller, Templates zu schreiben, sondern es wird automatisch sichergestellt, dass XSS-Attacken nahezu unmöglich sind. Auf die explizite Möglichkeit, Variableninhalte mit aktivem Inhalt auszugeben, gehen wir später in diesem Kapitel in Abschnitt 8.3.6, »Das pagelayout-Template«, ein.



Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen. >> Zum Feedback-Formular
<< zurück
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchempfehlungen
Zum Katalog: PHP 5.3 und MySQL 5.1






 PHP 5.3 und
 MySQL 5.1


Zum Katalog: Besser PHP programmieren






 Besser PHP
 programmieren


Zum Katalog: Webshops mit Magento






 Webshops mit
 Magento


Zum Katalog: Sichere Webanwendungen






 Sichere
 Webanwendungen


Zum Katalog: PHP 5.3 und MySQL 5.1 - Videotraining






 PHP 5.3 und
 MySQL 5.1 -
 Videotraining


Zum Katalog: Apache 2






 Apache 2


Zum Katalog: Suchmaschinen-Optimierung für Webentwickler






 Suchmaschinen-
 Optimierung
 für Webentwickler


Zum Katalog: Joomla! 1.5






 Joomla! 1.5


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Galileo Press 2008
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de