Über GSL-Team

Der Autor hat bisher keine Details angegeben.
Bisher hat GSL-Team, 910 Blog Beiträge geschrieben.

Häufige Sicherheitslücken bei Webanwendungen

In einer vor Kurzem veröffentlichten Analyse des Open Web Application Security Projekts, kurz OWASP, wurden die häufigsten zehn Fehler in Webprogrammen und auch die dadurch erzeugten Schwachstellen dargelegt. Im Jahr 2010 wurden als größtes Problem die Injection-Angriffe identifiziert.  Als nächstes folgen in der Liste das Cross Site Scripting und fehlerhaftes Anmeldungs- und Session-Management. Hier die gesamte Fehlerliste der OWASP geordnet in der Reihenfolge der Häufigkeit ihres Auftretens: Injection Cross Site Scripting Broken Authentication and Session-Management Insecure Direct Object References Cross Site Request Forgery (CSRF) Security Misconfiguration Insecure Cryptografic Storage Failure to Restrict URL Access Insufficient Transport Layer Protection Unvalidated Transport Layer Protection Der Report will auf diese Sicherheitsrisiken bei der Webprogrammierung hinweisen und vor allem die Entwickler von Webanwendungen für die typischen Fehler dieser Art bei der Programmierung sensibilisieren.

2010-07-14T21:39:10+02:00Juli 15th, 2010|Allgemein|Kommentare deaktiviert für Häufige Sicherheitslücken bei Webanwendungen

HTML 5 zum Zweiten

In allen moderneren Webbrowsern außer dem Internet Explorer 8 laufen HTML 5 – Seiten mit CSS 3 problemlos. Da aber viele Surfer noch steinzeitliche Browser benutzen, gibt es Möglichkeiten, diese zur Zusammenarbeit mit der Kombination HTML 5 / CSS 3 zu bringen. Da der Internet Explorer 8 CSS-Deklarationen für HTML-Elemente, die er nicht kennt, einfach ignoriert, hilft ein Workaround, der die Elemente zur Laufzeit mittels Javascript erzeugt: <script> document.create.element('header‘); document.create.element('nav‘); document.create.element('section‘); document.create.element('article‘); document.create.element('aside‘); document.create.element('footer‘); </script> Zum Testen der per Javascript erzeugten DOM-Elemente können Sie eine einfache HTML 5-Seite benutzen: <!doctype html> <html> <head> <title> HTML 5 wird getestet…</title> <style type=“text/css“>css3.css</style> </head> <body> <header>Der Test beginnt mit einer Überschrift</header> <nav> <ul> <li>Home</li> <li>Impressum</li> <li>Kontakt</li> </nav> <section> <h1> Erster Bereich</h1> <article> Dies ist der erste Artikel…</article> </section> <footer> <p>Hier steht der Inhalt der Fußzeile</p> </footer> </body> </html> Ein weiteres Hilfsmittel, mit dem man die alten Microsoft-Browser Internet Explorer 6, 7 und 8 auf HTML 5-Kompatibilität bringen kann, ist das Plugin Google Chrome Frame. Das Plugin ist kostenlos, aber es ist aus der Erfahrung nicht einfach, seine Besucher davon zu überzeugen, dies Plugin zu installieren. Mit diesem Plugin brauchen Sie die oben beschriebene Erzeugung der fehlenden DOM-Elemente per Javascript nicht mehr durchführen.

2010-07-12T08:18:16+02:00Juli 12th, 2010|Allgemein|1 Kommentar

HTML 5 zum Ersten

Keine Frage – HTML 5 ist im Anmarsch. Es gibt zwar noch keine finale Version der neuen Markup-Sprache fürs Web, aber im Grunde ist der neue Standard einsatzbereit. Ein guter Anlass, sich das jetzt nicht nur anzuschauen, sondern auch aktiv zu werden und die erste eigene Seite mit HTML 5 und CSS 3 zu entwickeln. HTML 5 bringt viele neue Funktionen und Möglichkeiten. Aber nichts ist so anders wie die neuen semantischen Tags. Dadurch wird es für Suchmaschinen, aber auch für Ihren Browser überhaupt erst möglich, sich ein Bild von den Inhalten der Website zu machen, den immer häufiger zum Surfen benutzten Smartphones wird die Navigation durch die Site erleichtert oder gar erst möglich gemacht, und last not least werden auch Sie als Webdesigner mit HTML 5 letztlich einfacher durchs Leben kommen. Wer schon einmal einen Satz Designs für ein CMS erstellt hat, der weiß, wie unnötig komplex der Aufbau eines Dokumentes mit den bisherigen nichtssagenden Tags gerät. Der korrekte Einsatz von HTML 5 eliminiert diese Probleme und wird Ihr Leben als Webdesigner auch dahingehend verändern, dass Sie sich mehr aufs Design konzentriern können und weniger um dessen Mechanik kümmern müssen! Über die neue Dokument-Typdeklaration und die neuen sprechenden Auszeichner von <header> über <nav> und <section> [...]

2010-07-08T14:04:17+02:00Juli 8th, 2010|Allgemein|Kommentare deaktiviert für HTML 5 zum Ersten

Zufällige Werbe-Banner mit PHP

Werbebanner sind immer noch sehr gefragt, und auch wenn Sie mehrere Banner abwechselnd an einer Stelle anzeigen möchten, ist das mit PHP kein großes Problem. Das soll an einem Beispiel mit zwei zufällig wechselnden Bannern für verschiedene Kunden, Bannergrafiken, Titel- und Alt-Tags gezeigt werden. Zunächst sollten die Daten der Werbebanner sinnvollerweise in ein Array gepackt werden. Das könnte so aussehen: <? $werbung = array( 1 => array('ziel‘ =>'adresse1.de‘, 'grafik‘ => 'banner1.gif‘, 'titel‘ => 'Werbung1‘, 'alt‘ => '1. Banner‘), 2 => array( 'ziel‘ => 'adresse2.de‘,  'grafik‘ => 'banner2.gif‘, 'titel‘ => 'Werbung2‘, 'alt‘ => '2. Banner‘)); ?> Die Ausgabe des mit der Funktion array_rand() zufällig ausgewählten Werbebanners mit Bild, Link, Titeltext und Alt-Text kann mit folgender Routine erzeugt werden: <? $sb = array_rand($werbung); echo ‘ <div> <a href = http://’.$werbung[$sb][‘url’].’/ title = “’.$werbung[$sb][‘titel’].’”> <img src = “.$werbung[$sb][‘grafik’].’” Alt = “’.$werbung[$sb]['alt‘].‘“ /> </a> </div>‘; ?> Dabei müssen die Grafiken im selben Verzeichnis liegen, in dem auch die Programmdatei ist.

2010-07-05T07:17:43+02:00Juli 5th, 2010|Allgemein|Kommentare deaktiviert für Zufällige Werbe-Banner mit PHP

Datenbanksicherung mit phpMyAdmin

Statische Internetseiten lassen sich ja recht einfach sichern. Man kann zum Beispiel alle Dateien vom Rootverzeichnis abwärts per FTP auf seinen PC übertragen und hat eine Sicherungskopie der gesamten Präsenz. Und da statische Seiten sich selten ändern, braucht man den Vorgang auch nicht häufig wiederholen und hat trotzdem immer eine Sicherung des aktuellen Standes. Das gleiche Verfahren eignet sich auch für dynamische Internetseiten, die einen Teil ihrer Inhalte aus einer Datenbank beziehen. Die statischen Anteile sichert man auf die schon für statische Seiten beschriebene Art und Weise. Allerdings braucht man auch ein Verfahren, um die Datenbank so zu sichern, dass man sie jederzeit wieder neu aus dem Nichts aufbauen kann. Da hilft das Tool phpMyAdmin, das fast jeder Hoster seinen Rootserver- oder VServer-Kunden zur Verfügung stellt. Man kann  phpMyAdmin aber auch selbst mit wenig Aufwand nachinstallieren, das Programm kostet nichts. Um eine Sicherungskopie der Datenbank zu erzeugen, wählen Sie den Menüpunkt „Exportieren“. Hier werden verschiedene Formate für den Export angeboten, neben SQL auch CSV und XML und weitere. SQL ist am besten geeignet, denn dabei werden alle informationen der Datenban und ihrer Tabellen mit gesichert, so dass man aus der SQL-Sicherung die komplette Datenbank wieder neu erzeugen kann. Wenn irgendwann einmal die Rücksicherung der Datenbank nötig [...]

2010-05-20T18:48:32+02:00Juli 3rd, 2010|Allgemein|Kommentare deaktiviert für Datenbanksicherung mit phpMyAdmin

Halbautomatik für Datenbankabfragen

Je mehr Felder eine Tabelle hat, umso umständlicher wird die Auswertung der Abfrage nach der üblichen Methode. Die sieht normalerweise so aus: <? $result = mysql_query("SELECT * FROM meinetabelle“); While ($row = mysql_fetch_array($result)) { // Hier beginnt die Wertzuweisung $field1 = $row[“field1”]; $field2 = $row[“field2”]; $field3 = $row[“field3”]; $field4 = $row[“field4”]; $field5 = $row[“field5”]; // Hier beginnt die Ausgabe echo $field1.”, ”. $field2.”, ”. $field3.”, ”. $field4.”, ”. $field5.” <br />“; } ?> Die Wertzuweisung aus dem Abfrageergebnis lässt sich aber auch automatisieren. Das Script sieht dann so aus: <? $result = mysql_query("SELECT * FROM meinetabelle“); While ($row = mysql_fetch_array($result)) { // Hier beginnt die Wertzuweisung $j = mysql_num_fields ($result); for ($i=0; $i < $j; $i++) { $k = mysql_field_name ($result, $i); $$k = $row[$k]; } // Hier beginnt die Ausgabe echo $field1.”, ”. $field2.”, ”. $field3.”, ”. $field4.”, ”. $field5.” <br />“; } ?> In $k steht dabei jeweils der Feldname. Mit dem Konstrukt $$k = mysql_field_name($result, $i); wird nicht der Variable selbst, sondern ihrem Inhalt, also dem jeweiligen Feldnamen der Wert zugeordnet. Schon bei diesem Beispiel mit 5 Feldern in der Datenbank sieht man, dass mit der Automatik eine Zeile weniger zu schreiben ist als mit der Standardmethode. Für jedes weitere Datenfeld in der [...]

2010-05-20T18:44:01+02:00Juni 30th, 2010|Allgemein|Kommentare deaktiviert für Halbautomatik für Datenbankabfragen

PHP Data Objects

Seit der Version PHP 5.1 gibt es in PHP zusätzlich zu den Standardfunktionen von MySQL auch die PHP Data Objects (PDO). Das ist eine PHP-Erweiterung, mit der man sehr schnell in einheitlicher Weise auf verschiedene Datenquellen zugreifen kann. Ähnlich wie beim bekannten und weit verbreiteten Repository PEAR werden dabei die spezifischen Zugriffe auf die verwendete Datenbank durch PDO gekapselt und sind damit transparent. PDO ist aber im Gegensatz zu PEAR eine rein binäre Erweiterung und deshalb auch deutlich schneller. PDO unterstützt zurzeit die Datenbanken MySQL, SQLite, PostgreSQL, MS SQL Server, Oracle, DB2, Firebird und auch ODBC. Dabei braucht allerdings jeder Datenbanktyp seinen spezifischen Treiber, sonst funktioniert es nicht. Eine Datenbankverbindung kann man über PDO mit folgendem Code öffnen, die Daten auslesen und listen und dann wieder schließen: $db = new PDO('mysql:host=localhost;dbname=meinedatenbank‘, 'user‘, 'passwort‘); $sql = $db->prepare("SELECT * FROM meinetabelle“); $sql->execute(); while ($row = $sql->fetch()) { echo $row[id].” “.$row[name].“ <br /> “; } $sql 0 NULL; $db = NULL; Das kurze Beispiel-Script öffnet eine Verbindung zur MySQL-Datenbank meinedatenbank, liest alle Daten aus der Tabelle meinetabelle aus und listet dann die Datenfelder id und name aus jedem Datensatz auf. Danach wird die Datenbankverbindung sauber geschlossen. Die Erweiterung PDO gestattet auch die Arbeit mit Prepared Statements, also vorkompilierten SQL-Kommandos. [...]

2010-05-20T18:39:36+02:00Juni 27th, 2010|Allgemein|Kommentare deaktiviert für PHP Data Objects

Einfacher Schutz vor Cross Site Scripting

Das Cross Site Scripting (XSS) gehört zu den häufigsten Angriffsmethoden auf Internetseiten. Dabei bezieht sich das Cross Site nicht unbedingt darauf, dass zwei Seiten beteiligt sind, sondern darauf, dass der Angriff zwischen mehreren Aufrufen einer Seite passiert. Grundsätzlich ist Cross Site Scripting eine spezielle Form von HTML-Injection, und es passiert meist in Formularen, in denen Benutzerdaten eingegeben und ungeprüft weiterverarbeitet werden. Da kann dann ein Angreifer leicht ausführbaren Programmcode ins System schmuggeln. Sie haben das vielleicht schon einmal im Gästebuch, Blog, Wiki oder Forum erlebt. Ein Angreifer gibt zum Beispiel dort einen Schadcode ein, der dann auf dem Client eines Benutzers, der sich das Gästebuch anschaut, ausgeführt wird. Der Schadcode ist meist in Javascript geschrieben. Deshalb sollte man beim Erstellen einer solchen Seite alles tun, um das injizieren von ausführbarem Code zu verhindern. Dazu bieten sich mehrere einfache Möglichkeiten an, die die Sicherheit merkbar erhöhen. Zunächst sollte man alle Eingaben von Benutzern als unsicher und bösartig betrachten und deshalb auf jeden Fall vor die weitere Verarbeitung eine Prüfung der Eingabewerte schalten. Als erstes sollte die Länge geprüft werden. Eine deutsche Postleitzahl mit mehr als 5 Stellen ist je nach Inhalt entweder ein Eingabefehler und sollte dem Benutzer zurück gemeldet werden oder aber ein versuchter XSS-Angriff. Prüfen [...]

2010-05-20T13:23:44+02:00Juni 24th, 2010|Allgemein|Kommentare deaktiviert für Einfacher Schutz vor Cross Site Scripting

Schnelleres PHP mit HipHop

PHP ist eigentlich eine interpretierte Sprache. Das heißt, dass eine PHP-Seite erst übersetzt und dann ausgeliefert wird. Das braucht natürlich unnötig Zeit, wenn eine Seite bei jedem Aufruf erneut übersetzt wird, auch wenn der Quellcode überhaupt nicht geändert wurde. Auch die Entwickler von PHP haben das schon lange erkannt, und seit der Version 4 wird der Quellcode vor der Ausführung zunächst in einen Bytecode übersetzt und dann solange gespeichert vorrätig gehalten, bis sich der Quellcode einmal geändert hat. Erst dann wird er wieder einmalig in den Bytecode übersetzt. Dadurch kann die Ausführung eines PHP-Programms bis zu achtmal schneller erfolgen. Für normale Internetseiten ist das schon eine deutliche Verbesserung der Performance – die Besucher einer solchen Präsenz bekommen schnell die angeforderten Informationen. Dem Internetdienst Facebook, der ca. 30.000 Server betreibt, um die Last von einigen Hundert Milliarden Seitenabrufen zu bewältigen, war das nicht ausreichend, und HipHop wurde innerhalb von zwei Jahren entwickelt. Im Grunde übersetzt HipHop den PHP-Quellcode in C++-Quellcode und diesen wiederum in Maschinensprache. So etwas nennt man einen zweistufigen Sourcecode-Transformator. Leider hat das System auch seine Schwächen, die zurzeit in der PHP-Community diskutiert werden. Das beginnt bei Funktionen wie eval(), die mit HipHop nicht mehr laufen, mit der Verkomplizierung der Entwicklungsprozesse, der berechtigten Sorge, dass [...]

2010-05-20T12:10:32+02:00Juni 21st, 2010|Allgemein|Kommentare deaktiviert für Schnelleres PHP mit HipHop

Das Impressum einer Website

Fast jede Internetpräsenz unterliegt der Impressumspflicht, aber das ist noch nicht allen Betreibern von Internetseiten bekannt.  Vielen ist es zwar bekannt, aber trotzdem nicht richtig oder vollständig realisiert. Aus diesem Grund sollen hier die wichtigsten Pflichteintragungen für das Impressum einer Internetsite beschrieben werden. Zunächst einmal muss das Impressum vollständig sein, es muss leicht zu finden, von jeder Einzelseite aus direkt anklickbar und immer online erreichbar sein. Wer diese Kriterien nicht erfüllt, muss mit einer Abmahnung von der Konkurrenz rechnen und eine unnötige und teure Abmahngebühr zahlen. Darüber hinaus kann auch unter bestimmten Umständen bei Verstößen gegen die Impressumspflicht ein Bußgeld von Behörden verhängt werden. Die wichtigste Frage dabei ist natürlich, wie ein korrektes und vollständiges Impressum aussehen muss. Die direkte Erreichbarkeit von jeder einzelnen Seite der Präsenz aus lässt sich am besten realisieren, wenn das Impressum als ein Menüpunkt des Hauptmenüs eingebunden ist. Damit ist man diesbezüglich in jedem Fall auf der sicheren Seite. Der name ist danei eigentlich egal, man darf das Impressum auch „Anbieterkennzeichnung“ oder „Kontakt“ nennen, wichtig ist nur, dass man erkennen kann, was einen unter diesem Menüpunkt erwartet. Ein Kontaktformular darf auch im Impressum stehen, allerdings ersetzt es kein vollständiges Impressum. Auch Angaben zum Urheberrecht oder Haftungsausschlüsse dürfen im Impressum stehen, sind [...]

2010-05-20T12:06:40+02:00Juni 18th, 2010|Allgemein|Kommentare deaktiviert für Das Impressum einer Website
Nach oben