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

Inhaltsverzeichnis
Vorwort
1 Einleitung
2 Installation
3 Frontend
4 Backend
5 Inhalte erstellen und verändern
6 Eine erste Webseite
7 Das Website-Design
8 Benutzer und Bereiche
9 Module, Plug-ins, Komponenten
10 Pflege der Webseite
11 Eine Site aufbauen
12 Was macht ein Template aus?
13 Tools zur Template-Erstellung
14 Barrierefreiheit
15 Aus der Trickkiste
16 Joomla! als professionelle Geschäftsplattform
17 Online-Shop: VirtueMart
18 Formulare: BreezingForms und ChronoForms
19 Dokumentenverwaltung: Docman und Attachments
20 Kalender: JEvent und iWebCal
21 Bildergalerien: Zoom Media Gallery und JoomGallery
22 Joomla! als Community-Treff
23 Weblogs: IDoBlog und MMS Blog
24 Wiki: JoomlaWiki
25 Forum: FireBoard
26 Gästebücher
27 Noch mehr Kommunikation
28 Installation beim Webhost
29 Backup und Upgrade
30 Tools
31 Standard-Erweiterungen
32 Mehrsprachigkeit
33 Suchmaschinenoptimierung
34 Statistik
35 Performance
36 Datentransfer und FTP-Modus
37 Sicherheit
38 Troubleshooting
39 Mein erstes Modul
40 Die Joomla!-API
41 Plug-ins erstellen
42 Eine eigene Komponente
A Parameter der unterschiedlichen Menütypen
B Die Joomla!-API
C Glossar
D Inhalt der DVD
Stichwort
Ihre Meinung?

Spacer
<< zurück
Joomla! 1.5 von Anja Ebersbach, Markus Glaser, Radovan Kubani
Das umfassende Handbuch
Buch: Joomla! 1.5

Joomla! 1.5
geb., mit DVD
820 S., 34,90 Euro
Rheinwerk Computing
ISBN 978-3-89842-881-1
Pfeil 37 Sicherheit
Pfeil 37.1 Angriffstypen
Pfeil 37.1.1 SQL Injection
Pfeil 37.1.2 Parametermanipulation
Pfeil 37.1.3 Cross Site Scripting (XSS)
Pfeil 37.1.4 Man in the Middle
Pfeil 37.2 Vorbeugende Maßnahmen
Pfeil 37.3 Spam-Vorbeugung

»Die Kritik an Anderen hat noch keinem die eigene Leistung erspart.« Noel Coward

37 Sicherheit

Sobald Ihr Rechner mit dem Internet verbunden ist, müssen Sie damit rechnen, dass ungebetene Gäste versuchen, sich an Ihren Daten zu vergreifen. Dabei handelt es sich in den wenigsten Fällen um echte Hacker oder Cracker, sondern vielmehr um sogenannte Scriptkiddies, die irgendwo im Netz eine Anleitung gefunden haben, wie man in ein System eindringt, und das jetzt ausprobieren wollen. Angriffe auf Webserver richten sich in der Regel gegen drei Ziele:

  • Seiteninhalt: Es wird versucht, den Inhalt einer Homepage zu verändern und eigene Botschaften einzuschleusen.
  • Software: Das Programm, das eine dynamische Seite steuert, wird vom Missetäter verändert.
  • Rechner: Es wird versucht, über die Software den Rechner, auf dem die Webapplikation läuft, unter Kontrolle zu bringen. Diese Art von Angriff ist die gefährlichste. Falls sie erfolgreich ist, kann der Angreifer Ihren Computer weitreichend ändern und als Basis für weitere Angriffe auf andere Computer nutzen.

Absolute Sicherheit vor Angriffen wird man niemals garantieren können. Es gibt jedoch eine Reihe von Maßnahmen, um das Risiko zu minimieren. Die wichtigste ist: Halten Sie Ihre Software, also Webserver, PHP, MySQL und Joomla! auf dem neuesten Stand. Wie man Joomla! aktualisieren kann, wird weiter oben in diesem Kapitel beschrieben. Verfolgen Sie dazu auch die Nachrichtenticker auf www.joomla.org.


Rheinwerk Computing - Zum Seitenanfang

37.1 Angriffstypen Zur nächsten ÜberschriftZur vorigen Überschrift

Das Einfallstor für Angreifer ist in webbasierten Applikationen immer die Kommunikation zwischen Browser und Server. Dabei kann man folgende häufige Angriffstypen unterscheiden:

  • SQL Injection
  • Parametermanipulation
  • Cross Site Scripting
  • Man in the Middle

Diese Typen werden im Folgenden genauer erläuert.


Rheinwerk Computing - Zum Seitenanfang

37.1.1 SQL Injection Zur nächsten ÜberschriftZur vorigen Überschrift

Nehmen wir an, Sie verwenden ein Login-Formular, das die Authentifizierung mittels einer Datenbankabfrage durchführt. Der PHP-Code sieht folgendermaßen aus:

$query = "SELECT * FROM users WHERE username = '" 
        .$_POST['username'].'"'; 
$result = mysql_query($query); 
if (mysql_num_rows($result) > 0) $auth = true 
else $auth = false;

Es wird also in der Datenbank nachgesehen, ob der Username existiert. Ist das der Fall, wird eine Variable $auth, die den Autorisierungsstatus festlegt, so gesetzt, dass der Zugriff gewährt wird. Stellen Sie sich nun vor, Sie sind ein bösartiger Angreifer. Natürlich geben Sie keinen gültigen Usernamen ein, da Sie ihn ja nicht kennen. Da Sie findig sind, versuchen Sie, das SQL-Statement zu manipulieren. Sie geben also diese Zeichen ein:

nix' OR '' = '

Wenn das SQL-Statement nun zusammengesetzt wird, so wird diese Abfrage gestartet:

SELECT * FROM users WHERE username = 'nix' OR '' = ''

Da die zweite Bedingung in der WHERE-Klausel immer wahr ist, werden wir im System angemeldet.

Ein ähnlich gelagerter Fall ist die sogenannte Command Injection, die möglich ist, wenn das Skript auf dem Server beispielsweise mittels exec ein Betriebssystemkommando ausführt, das direkt Parameter aus den übergebenen Formulardaten übernimmt.

Um solche Angriffe zu verhindern, müssen Sie bei der Programmierung sorgfältig darauf achten, dass die übergebenen Daten auch wirklich dem entsprechen, was erwartet wird, und auf keinen Fall SQL-Statements oder Kommandos enthalten.


Rheinwerk Computing - Zum Seitenanfang

37.1.2 Parametermanipulation Zur nächsten ÜberschriftZur vorigen Überschrift

Diese Art des Angriffs macht sich ungeschützte Parameter einer Seitenabfrage zunutze. Die Gefahr geht dabei davon aus, dass Daten, die sicherheitsrelevant sind, in diesen Parametern gespeichert werden, oft aus dem falschen Glauben heraus, dass man diese nicht manipulieren könne. Zwei Beispiele, die so schon vorgekommen sein sollen, mögen dies verdeutlichen:

Mittels POST-Parameter

Eine Seite (nicht Joomla!) hatte die Mail-Adresse, an die eine Anfrage gesendet werden sollte, nicht auf dem Server, sondern direkt in ihrem Kontakt-Mail-Formular in einem <hidden>-Feld gespeichert.

<form action="mail.php" method="POST"> 
   <input type="hidden" name="an" value="admin@seite.de">

Dies wurde von einem findigen Spammer ausgenutzt, der die Adresse aus diesem Feld einfach austauschte und so eine Menge unerwünschter E–Mails über diese Seite – und deren Namen – verschickte.

Mittels Cookie

Bei einer anderen Seite hatte der Betreiber zur Erleichterung der Kommunikation die Zugriffsparameter des Nutzers in einem Cookie auf seinem Rechner gespeichert. Das sah in etwa so aus:

Cookie: admin=no; time=10:00;

Es wurden also der Adminstatus und der letzte Zugriff (zur Sicherheit) protokolliert. Cookies sind allerdings nur Textdateien auf dem Computer. Ein nachfolgender schlitzohriger Benutzer änderte also einfach die beiden Werte in

Cookie: admin=yes; time=13:00;

und schon hatte er Zugriff auf die Seite. Und das auch noch mit Administratorrechten!

Eine mögliche Lösung für Probleme dieser Art ist, alle sicherheitsrelevanten Daten auf dem Server mittels Sessions zu verwalten, die auf jeden Fall sicherer sind als die vorgestellten Methoden.


Rheinwerk Computing - Zum Seitenanfang

37.1.3 Cross Site Scripting (XSS) Zur nächsten ÜberschriftZur vorigen Überschrift

Mit dieser Methode wird weniger der Webseite selbst als vielmehr ihren Usern geschadet. Der Angreifer versucht, bösartigen Code, beispielsweise in JavaScript, auf der Seite zu platzieren, der den User dann dazu bringt, Daten preiszugeben oder eine bestimmte Seite aufzurufen. Sehen wir uns das einmal genauer an. Der bösartige Code soll nur ein Hinweisfenster sein:

<script>alert ("Ich bin böse")</script>

Ein Angreifer hat zwei grundlegende Möglichkeiten, diesen Code zu platzieren. Erstens kann er versuchen, ihn in Foren, Gästebücher, Seiteninhalte etc. einzuschleusen, auf die er Zugriff hat. Ruft der nichts ahnende User eine dieser Seiten auf, wird der Code ausgeführt.

Zweitens kann der Code über eine URL eingeschleust werden. Häufig werden Usereingaben beispielsweise auf Bestätigungsseiten noch einmal ausgegeben. Der Angreifer kann nun eben so eine URL auf der Seite platzieren. In Joomla! werden beispielsweise Rückmeldungen an den Benutzer auf diese Weise erzeugt. Keine Angst: Joomla! filtert hier bösartigen Code. Der Mechanismus kann dennoch benutzt werden, um den Besucher übel zu beschimpfen:

http://localhost/joomla/index.php?mosmsg=Sie+sind+wohl+doof

Wird diese URL aufgerufen, so steht über dem Content-Bereich »Sie sind wohl doof«.

Die Gegenmaßnahme ist auch hier wieder die sinnvolle Filterung der Eingaben. Lassen Sie auf keinen Fall <script>-Tags in irgendwelchen Foren zu!


Rheinwerk Computing - Zum Seitenanfang

37.1.4 Man in the Middle topZur vorigen Überschrift

Eine Gefahr für die sichere Kommunikation zwischen Client und Server stellt immer der Mitleser dar, der sich zwischen die beiden stellt und die Botschaften, die ausgetauscht werden, abhört und unter Umständen manipuliert. Aufgrund der Natur des Internets kann man diese Mithörer nie ausschließen, da die Informationspakete auf dem Weg zwischen den beiden Endpunkten über viele Computer laufen.

Dies verdient insbesondere deshalb unsere Aufmerksamkeit, weil Zugangsdaten wie Passwörter zwar im Browserfenster maskiert werden, bei der Übertragung jedoch im Klartext gesendet werden. Ein Mitleser kann sie also sehr leicht abfangen und für seine Zwecke missbrauchen.

Die einzig sichere Variante, diesem Problem zu entkommen, ist, eine verschlüsselte Verbindung zu verwenden. Dies ist über das HTTPS-Protokoll möglich. Um wirklich sicherzugehen, benötigen Sie dafür allerdings eine feste IP-Adresse und ein Vertrauenszertifikat. Das ist durchaus mit einigen Kosten verbunden.



Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen. >> Zum Feedback-Formular
<< zurück
  Zum Katalog
Zum Katalog: Joomla! 1.5 - Das umfassende Handbuch





Joomla! 1.5 -
Das umfassende Handbuch

Jetzt bestellen


 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchtipps
Zum Katalog: Joomla! 3.5






 Joomla! 3.5


Zum Katalog: Top-Rankings bei Google und Co






 Top-Rankings bei
 Google und Co


Zum Katalog: Erfolgreiche Websites






 Erfolgreiche Websites


Zum Katalog: WordPress 4






 WordPress 4


Zum Katalog: Webseiten erstellen für Einsteiger






 Webseiten erstellen
 für Einsteiger


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Rheinwerk Verlag GmbH 2009
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.


[Rheinwerk Computing]

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de