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

Die platzsparende Speicherung von IP-Adressen mit MySQL und PHP

Es ist eine ziemlich unbekannte Funktion von MySQL, die es erlaubt, IP-Adressen nicht wie üblich als VARCHAR(15), sondern als UNSIGNED INT(10) in der Datenbanktabelle abzuspeichern und natürlich auch wieder zurück in eine IP-Adresse zu verwandeln. Da VARCHAR(15) 16 Bytes verbraucht und der 4-Byte-Long nur 4 Bytes, braucht man damit nur ein Viertel des Speicherplatzes. Die dazu nötigen MySQL-Funktionen sind INET_ATON() und INET_NTOA(). Wenn Sie den Befehl SELECT INET_ATON(„127.0.0.1“), INET_NTOA(2130706433) an MySQL schicken, werden sie als Resultate 2130706433 und 127.0.0.1 zurückbekommen. In dieser rein numerischen Notation lassen sich zum Beispiel bestimmte Ranges von IP-Adressen wesentlich einfacher überprüfen als mit den IP-Adressen: SELECT `feld` FROM `tabelle` WHERE `ip`< = INET_ATON('192.168.254.1') AND `ip`> = INET_ATON('192.168.254.254'); Dieser Befehl zeigt alle gespeicherten IP-Adressen zwischen 192.168.254.1 und 192.168.254.254. Es gibt auch zwei entsprechende PHP-Funktionen, die genauso funktionieren. Mit ip2long() und long2ip() übernimmt PHP die entsprechende Umwandlung, so dass auch ohne MySQL das wesentlich einfachere Scannen von IP-Ranges möglich ist.

2010-05-20T10:00:07+02:00Juni 15th, 2010|Allgemein|1 Kommentar

Tweets gegen Kohle

Auch Twitter hat sich jetzt etwas einfallen lassen, um aus seinem sehr beliebten und weit verbreiteten Service Geld zu machen. Das Kind nennt sich „Promoted Tweets“ und dabei erscheinen Anzeigen, wenn Benutzer von Twitter nach Stichwörtern suchen, die Werbekunden von Twitter gebucht haben. Zukünftig sollen solche Werbeeinblendungen auch im Twitter-Stream gezeigt werden. Mit über 22 Millionen Nutzern auf der ganzen Welt hat Twitter natürlich eine riesige Zielgruppe, so dass es nur eine Frage der Zeit war, bis das System auf eine solche Art monetarisiert wurde. Natürlich wurde die Wirksamkeit der Werbeeinblendungen durch Auswertung der Leserzahlen, der Anzahl von Re-Tweets, Antworten und Klicks auf Links gemessen. In Zukunft sollen mit Hilfe kontextueller Erkennung auch thematisch passende Werbeeinträge in Twitter-Diskussionen eingefügt werden, auch wenn die Diskutanten weder gesucht noch Werbung gebucht haben und auch keine Kontakte (Follower) des Werbepartners sind. Ob sich diese Werbung nur für die weltweit agierenden „Big Players“ rechnet oder ob sie auch für lokale Kunden Sinn macht, die ihre Produkte und Dienstleistungen promoten wollen, bleibt abzuwarten, denn dazu fehlt (noch) eine Lokalisierung, die dafür sorgt, dass die Werbekosten nicht diffus in der ganzen Welt verstreut werden, sondern gezielt im lokalen Aktionsbereich der Werbekunden ihre Wirkung entfalten. So schnell werden wir uns also beim Seitenbauen [...]

2010-05-20T09:57:24+02:00Juni 12th, 2010|Allgemein|Kommentare deaktiviert für Tweets gegen Kohle

Update für ImpressCMS

Impress ist aus dem preisgekrönten CMS XOOPS hervorgegangen. Das CMS wurde an vielen Stellen überarbeitet und die neue Version 1.2.1 veröffentlicht. Installationsprobleme und Probleme mit Upgrade und Registrierung wurden gelöst. Nicht nur die Grundfunktionalität, sondern auch die Template- und Designfunktionen und das Control-Panel wurden verbessert. Impress CMS läuft unter PHP 5.2.x und wird unter der GPLv2-Lizenz angeboten. An der nächsten größeren Version 1.3 wird schon gearbeitet, sie steht ebenfalls kurz vor der Veröffentlichung. Darin gibt es ein neues Interface für die Administration und sehr viele Verbesserungen von Performance und Kompatibilität. Zum CMS Impress gibt es auch eine deutsche Internetseite unter impresscms.de, die gut gepflegt ist. Dort findet man nicht nur die aktuellen Versionen als Download, sondern auch eine gute deutsche Dokumentation und ein Forum zur Unterstützung der Community. Besonders interessant ist ein neues Modul mit dem Namen „XPressME“ für ImpressCMS, das eine vollständige Integration des beliebten Blogs Wordpress unter ImpressCMS darstellt. Dabei sieht Wordpress so aus, als sei es ein natives Impress-Modul und es braucht auch keine zusätzlichen Logins.

2010-05-20T08:45:52+02:00Juni 9th, 2010|Allgemein|Kommentare deaktiviert für Update für ImpressCMS

MySQL-Datenbank auf Zeichensatz UTF8 umstellen

Wenn man sich entschieden hat, seine Datenbank auf den Unicode-Zeichensatz UTF-8 umzustellen, muss man zunächst schauen, um welche Version von MySQL es sich handelt. Ab Version 5.0 ist es kein großes Problem, die einzelnen Tabellen in den Zeichensatz UTF-8 umzuwandeln. Man muss sich aber noch Gedanken um die Sortierung machen. Die Sortierung utf8-general-ci ist schneller, aber sortiert die Sonderzeichen nicht ganz präzise nach dem Duden. Die Sortierung utf8_unicode_ci ist exakter, aber leider auch langsamer. Das ci steht bei der Sortierung übrigens für case insensitive und bedeutet, dass Gross- und Kleinschreibung nicht unterschieden werden. Den Umwandlungsbefehl kann man in der MySQL-Konsole oder in phpMyAdmin* eingeben: ALTER TABLE Tabellenname CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci Das muss natürlich mit jeder Tabelle der Datenbank gemacht werden. Man kann darüber hinaus auch sicher stellen, dass neu angelegte Tabellen direkt diesen neuen Unicode-Zeichensatz zugeordnet bekommen, indem man den entsprechenden Wert der Voreinstellung für diese Datenbank ändert: ALTER DATABASE Datenbankname DEFAULT CHARACTER SET  utf8 COLLATE utf8_general_ci Damit ist die Umstellung der Datenbank auf den Zeichensatz UTF-8 abgeschlossen. *Als Kunde von Suleitec Webhosting können Sie das vorinstallierte MySQLAdmin über ihre-domain.xy/mysqladmin oder auch mit einem Klick auf die Datenbank im Accountlogin erreichen.

2018-10-23T15:33:09+02:00Juni 6th, 2010|Allgemein|2 Kommentare

Der Unicode-Zeichensatz UTF8 in Datenbanken und Internetseiten

Das Internet kann von jedem Ort in der Welt benutzt werden. Wenn dabei die Inhalte aus einer Datenbank kommen, kann schnell mal aus „Mit freundlichen Grüßen“  die kryptische Formulierung „Mit freundlichen GrÃ?Ã?en“ werden. Der Grund liegt im verwendeten Zeichensatz. Ein Zeichensatz legt fest, welches Zeichen durch einen bestimmten binären Code angezeigt wird. Mit den 8-Bit-Codes können maximal 256 Zeichen unterschieden werden. Ein anderer Zeichensatz führt dazu, dass die gleichen 8 Bits dann ein anderes Zeichen darstellen, das können auch nicht darstellbare Steuerzeichen sein. Wenn die Datenbank Ihrer Internetanwendung zum Beispiel für den in Deutschland häufig verwendeten westeuropäischen Zeichensatz ISO 8859-1 eingerichtet ist (auch als Latin-1 bezeichnet) und Sie Ihre Lösung auch in Griechisch anbieten möchten, haben Sie ein Problem, denn der ISO 8859-1-Zeichensatz unterstützt das griechische Alphabet nicht. Hier hilft dann der  der Unicode-Zeichensatz UTF-8, mit dem man seine Internetseiten, Programme und Daten bei neuen Anwendungen immer versehen sollte, denn damit kann man alle Sprachzeichen abbilden. Das ist möglich, weil bei UTF-8 jedem Unicode-Zeichen eine ganze Bytekette von variabler Länge bis maximal vier Bytes (also 32 Bit)zugeordnet werden kann. Bei Internetseiten wird der Unicode-Zeichensatz mit folgendem Meta-Tag festgelegt: <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" > Es kann aber passieren, dass ein Server trotz dieses Tags in den HTML-Seiten [...]

2010-05-19T20:04:55+02:00Juni 3rd, 2010|Allgemein|Kommentare deaktiviert für Der Unicode-Zeichensatz UTF8 in Datenbanken und Internetseiten

MySQL: Auto-Increment-Werte verändern

Wenn Sie schon mit MySQL-Datenbanken gearbeitet haben, wissen Sie, dass man schon bei einer kleinen Datenbanklösung meist nicht an einem Primärschlüssel in den Tabellen vorbei kommt, und sei es nur aus Geschwindigkeitsgründen. Manchmal ist es ein Feld, das von der Anwendung nicht gebraucht wird, häufiger aber ein ID-Feld, das bei einer Rechnungstabelle die Rechnungsnummer oder bei einer Kundentabelle die Kundennummer enthält. Gemeinsam haben diese Felder, dass es Integer-Feldtypen sind und dass durch die Auto-Increment-Funktion, die man bei der Erstellung der Tabelle als Extra angibt, bei der Anlage jedes neuen Datensatzes das Auto-Increment-Feld um 1 erhöht und automatisch eingetragen wird. Manchmal gibt es aber Gründe, die interne ID-Nummer, die MySQL abgespeichert hat, zu verändern, um einen Sprung in die IDs einzubauen. Nehmen wir ein Beispiel zum Schmunzeln, das aber häufiger vorkommt: Wenn Ihr Kunde mit der von Ihnen erstellten PHP/MySQL-Lösung zur Rechnungsstellung beginnt, möchte er nicht, dass die erste Rechnungsnummer die 1 ist, weil er sich damit als Neuling im Geschäft oder als kleine Firma zu outen glaubt. Ein anderer Grund wäre zum Beispiel, wenn die ersten vier Stellen der Rechnungsnummer oder Kundennummer das Kalenderjahr der Anlage angeben sollen und nur der Rest der Rechnungsnummer eine laufende Nummer sein soll. Dann kommt nach der Rechnung Nr. 200912345 [...]

2010-05-20T09:55:12+02:00Mai 31st, 2010|Allgemein|Kommentare deaktiviert für MySQL: Auto-Increment-Werte verändern

SelfHTML als Wiki

Jeder, der Internetseiten erstellt, kennt auch SelfHTML. Hier wird jede Frage zu HTML ausführlich beantwortet und neben den Grundlagen und Befehlsreferenzen auch Tutorials und Kurse zu HTML, XML, XHTML, Javascript, Perl und CSS angeboten. Es gibt fast keine Frage zu diesen Themen, die nicht ausführlich behandelt wird. Jetzt haben die Verantwortlichen eine neue Entwicklung begonnen: SelfHTML wird sukzessive zu einem Wiki umgebaut. Das bisherige SelfHTML unter selfhtml.org wird noch parallel angeboten, bis das Wiki weitgehend aufgebaut ist und einen zufriedenstellenden Standard hat. Wenn ein Thema im neuen Wiki schon gut abgehandelt ist, wird in der alten Dokumentation ein Link auf den Eintrag im Wiki gesetzt. Auf der Startseite des alten SelfHTML gibt es auch einen Aufruf, als Autor beim neuen Wiki mitzuarbeiten. Die Inhalte des Wiki unterliegen der Crative Commons-Lizenz. Das erlaubt die Weiterverwendung und Vervielfältigung der Inhalte bei Nennung des Rechteinhabers. Das neue Wiki von SelfHTML finden Sie unter wiki.selfhtml.org.

2010-05-19T08:17:45+02:00Mai 28th, 2010|Allgemein|Kommentare deaktiviert für SelfHTML als Wiki
Nach oben