Eine Woche mit AwardSpace

Eine Woche mit AwardSpace liegt hinter mir. Ich probierte den kostenlosen Webhosting-Plan des Webhosters aus. Bestimmt keine schlechte Wahl, oder? – immerhin bietet AwardSpace nach eigenen Angaben das beste kostenfreie Produkt in diesem Bereich. Bevor ich gleich zu meinen Erfahrungen komme, erst noch eine Erklärung, wieso ich überhaupt ein Gratisangebot suchte.

Warum ein Gratisanbieter?

Im März 2010 wählte ich für ein neues Internetprojekt einen günstigen Webhost in den USA. Für knapp 3 US-Dollar im Monat bot er nahezu alles, was das Herz eines Webhosting-Kunden auf einem geteilten Server höher schlagen lässt, abgesehen vom Zugriff auf ein Datenbanksystem wie beispielsweise MySQL. Mit Datenbanken hätte sich der Preis verdoppelt, was zwar verglichen mit anderen Angeboten noch immer nicht sonderlich teuer gewesen wäre, aber das Sparpotenzial deutlich verringert hätte. Für mich war das der Anstoß, die Auszeichnungssprache Aneamal mit HTML-Konverter als Alternative zu einfachen Blog-Lösungen, die eine Datenbank erfordern, zu entwickeln. Heute setze ich Aneamal hier auf dieser Internetseite ein und hab’s als Open-Source-Software veröffentlicht. Obwohl ich das eigentlich angestrebte Projekt beim US-Webhoster letztendlich nicht umsetzte, kam durch das Entwickeln in einem eingeschränkten Umfeld viel Produktives heraus.

Einschränkungen können die Kreativität fördern. In diesem Januar nahm ich mir vor, ein neues E-Mail-Formular aufzusetzen, bei welchem die Daten vom Browser des Nutzers zum Server verschlüsselt übertragen werden. So kann man dieses Formular in offenen Funknetzen auf Webseiten verwenden, die selbst keine verschlüsselte HTTPS-Verbindung bereitstellen können. Letzteres ist typisch für Gratishoster. Ebenfalls typisch für kostenlose Anbieter ist, dass diese keinen E-Mail-Versand über SMTP zulassen. So ist ein geeignetes eigenes E-Mail-Formular – abgesehen von der Verwendung als Kontaktformular für Besucher – auch für einen selbst nützlich, um anderen auf elektronischem Wege Post zukommen zu lassen. Ich suchte also einen kostenlosen Webhoster, um mein Skript in einer anwendungsnahen Umgebung zu entwickeln und auszuprobieren.

Die Wahl fällt auf AwardSpace

Nach langem Erforschen und Vergleichen von gebührenfreien Anbietern fiel meine Wahl auf AwardSpace.com. Andere (vermeintlich) kostenlose Webhoster haben verschiedene Haken, die sich im Kleingedruckten oder in Erfahrungsberichten fanden: „kostenloses“ Hosting nur bei teurer Registrierung einer Domain beim selben Anbieter, heimliches sporadisches Umleiten von Besuchern auf andere Webseiten, Aktivität in einem Forum vorausgesetzt … AwardSpace kommt hingegen vergleichsweise gut bei den Einschätzungen weg, bietet ein wirklich kostenloses Angebot, hat aber auch zahlende Kunden, was die Finanzierung des Unternehmens glaubwürdig macht.

AttractSoft ist stolz: Das Tochterunternehmen AwardSpace hat schon mehr als eineinhalb Kunden. Quelle: http://www.attractsoft.com/, 19. Januar 2011

Für mein Projekt essenziell: AwardSpace blockiert nicht die mail-Funktion von PHP. Viele andere Anbieter tun das bei ihren unentgeltlichen Angeboten. Um sich dennoch vor spammenden Kunden zu schützen, überschreibt AwardSpace die Absenderadresse mit der eines eingerichteten E-Mail-Kontos, wenn man eine fremde angibt. Für mich kein Problem, da ich kein Spammer bin. Um ein E-Mail-Konto anlegen zu können, benötigt man als Gratiskunde eine eigene Domain, aber auch das ist für mich kein Problem – diese Domain muss nicht über AwardSpace registriert sein.

Erste Probleme

Die Anmeldung und erste Einstellungen klappten gut. Eine Überraschung allerdings war, dass hochgeladene Bilder nicht angezeigt wurden. Bei Aufruf einer Grafik, ob im PNG- oder GIF-Format, erschien über einer Reihe von als mögliche Ursachen aufgeführter aber unzutreffender Punkte folgender Fehler:

[meine Domain] [Sun Jan 16 18:00:00 2011] [error] [client IP-Adresse des Besuchers] Premature end of script headers: f403.php

Error 500: Script Execution Failure

Merkwürdig. Da versuchte ich ein Bild zu öffnen und erhielt eine Meldung über einen Fehler in Zusammenhang mit einem PHP-Skript, das weder von mir stammte, noch für mich in meinem Benutzerkonto zu sehen war. Doch das Rätsel ließ sich lösen: Der Fehler tauchte nur auf, wenn ich im Browser das Übertragen des Referers unterdrückte. Es scheint also so zu sein, dass AwardSpace ein Skript einsetzt, welches Hotlinking unmöglich machen soll. Dass der Server einen HTTP-Status-Code 500 Internal Server Error sendet, obwohl ein Status 403 Forbidden angemessen wäre, lässt auf eine fehlerhafte Umsetzung schließen.

Doof ist auch, dass damit Seiten für all jene legitimen Benutzer verschandelt werden, die zu Recht ihre Privatsphäre durch entsprechende Browsereinstellungen schützen. Doof ist ebenfalls, dass der technisch versierte Kunde, welcher seinen Speicherplatz bei AwardSpace fürs Hotlinking nutzen möchte, die Hürde mit zwei Programmzeilen austricksen kann. Der Aufruf einer PHP-Datei mit folgendem Inhalt etwa gab ein Beispielbild ohne Ansehen des Referers anstandslos aus:

header ('Content-type: image/png');
readfile ('beispiel.png');

Ich habe Verständnis für den Wunsch eines Webhosters, Hotlinking auf kostenlosen Kundenkonten zu unterbinden. Wenn dadurch einerseits ein Konflikt mit der Privatsphäre der Besucher entsteht oder eine verunstaltete Seite ausgegeben wird, andererseits die Maßnahme seitens eines Störers leicht umgangen werden kann, ist das allerdings schlecht gelöst. Da ich für mein E-Mail-Formular keine Bilder benötigte, hielten mich solche Ärgernisse jedoch nicht weiter auf.

Ablauf der Formularverschlüsselung

Bevor Daten von meinem Formular abgesendet werden, verschlüsselt der Browser die Inhalte mithilfe von JavaScript mit dem AES-Algorithmus. Dafür nutze ich die AES-JavaScript-Implementierung von Chris Veness, welche ich allerdings noch anpasste: Die UTF-8-Umwandlungen darin behinderten. Ich denke, solche Zeichensatz-Konvertierungen sollten in einen Verschlüsselungsalgorithmus nicht integriert werden – falls sie jemand braucht, kann er sie der Verschlüsselung vor- bzw. der Entschlüsselung nachschalten. Für die serverseitige Entschlüsselung nutze ich eine AES-PHP-Implementierung, ebenfalls von Chris Verness.

Damit allein ist es noch nicht getan, denn der Server benötigt das Passwort, welches der Browser zum Verschlüsseln nutzt, wieder fürs Entschlüsseln. Auch das Passwort muss also sicher übertragen werden. Hierfür setze ich das RSA-Verfahren ein, ein asymmetrisches Kryptosystem mit öffentlichem und privatem Schlüssel. Fürs serverseitige Erzeugen der Schlüssel verwende ich die entsprechende Funktion aus jCryption von Daniel Griesser. Der öffentliche Schlüssel wird bereits beim Formularaufruf an den Browser des Nutzers übertragen. Damit verschlüsselt der Nutzer-Browser das von ihm zufällig generierte AES-Passwort, wobei prinzipiell nur simple mathematischen Operationen benötigt werden. Es wird allerdings mit ganzen Zahlen gearbeitet, welche in ihrer Größe den typischerweise für Integer-Variablen reservierten Speicherplatz sprengen. So nutze ich für die Berechnung auch die Big Integer Library von Leemon Baird.

Wurde das Formular abgesendet, entschlüsselt der Server zuerst das AES-Passwort mit dem gemerkten privaten RSA-Schlüssel. Funktionen zur Behandlung quasi beliebig großer Integer sind in PHP bereits integriert, sodass dies ein Kinderspiel ist. Mit dem ermittelten AES-Passwort werden dann die Formular-Daten entschlüsselt und können weiterverwendet werden.

Sporadisch funktioniert’s

Das Erzeugen der Schlüssel für das RSA-Verfahren ist typischerweise jener Teil des Programms mit dem höchsten Rechenaufwand. Dennoch blieb das Skript deutlich unterhalb der von AwardSpace vorgegebenen maximalen Rechenzeit von 30 Sekunden, was offensichtlich war, und der maximalen Arbeitsspeicherbelegung von 16 Megabytes, was ich mit der PHP-Funktion memory_get_peak_usage überprüfte. Vergleichstests bei einem anderen Webhost zeigten, dass mein Skript problemfrei arbeitet.

Umso mehr erstaunt, dass mein Skript bei Awardspace manchmal funktionierte, und manchmal nicht. Über den Daumen gepeilt lief es bei AwardSpace bei 50 % der Aufrufe. Die andere Hälfte führte zu einer Fehlerseite, die sich allein durch den angegebenen Dateinamen von der oben beschriebenen unterschied. In diesem Fall benannte die Meldung nun tatsächlich meine Datei. Eine Ursache oder Erklärung für das Versagen konnte ich aber nicht finden. Per PHP-Fehlerüberwachung ließ sich kein Fehler innerhalb des betroffenen Skripts aufzeichnen. Woran es bei AwardSpace in diesem Fall scheiterte, wird vermutlich ein Geheimnis bleiben.

Serverausfälle, tagelang

Die erste Hälfte der Woche war vorbei und mein Programm fertig. Gewiss, bei AwardSpace lief das Skript nicht bei jedem Aufruf, aber spätestens nach ein paar Versuchen war es da und konnte benutzt werden. Freilich nur, bis der Server ausfiel. Tagelang. Als Gratiskunde geht man fast schon von der Möglichkeit aus, dass so etwas passiert. Doch es betraf nicht nur kostenlose Benutzerkonten. Auch die Internetseiten samt E-Mail-Konten und aller Zugänge zahlreicher zahlender Kunden auf mehreren Servern blieben für zwei Tage und länger unerreichbar. Eine kleine Katastrophe für Leute, die mit ihrer Internetseite den Lebensunterhalt bestreiten. Insbesondere, wenn neben ausbleibenden Einnahmen Abnehmer abspringen und Suchmaschinen den Internetauftritt nachhaltig herabstufen. AwardSpace garantiert seinen zahlenden Klienten eigentlich 99,9 % Erreichbarkeit, das entspräche einer Ausfallzeit von unter 9 Stunden im ganzen Jahr. Übrigens kein überheblich ehrgeiziger Wert: 99,9 % garantieren und halten viele seriöser Anbieter. Das darf man eigentlich erwarten.

Unfreiwillige Komik beim vergeblichen Versuch mich in den Administrationsbereich einzuloggen: “Free” customers are actually kept in a slave database. 20. Januar 2011

Was die tatsächliche Ursache der Serverausfälle angeht, kann man nur spekulieren. Einerseits berichtete AwardSpace von DDoS-Angriffen, was natürlich möglich ist. Es hätte den Vorteil, dass der Schwarze Peter dann nicht allein beim Unternehmen läge. Andererseits war von Hardwaredefekten die Rede, was besser zur Ausfallcharakteristik zu passen scheint. Vermutlich kamen verschiedene Umstände zusammen.

Bevor mein Kundenkonto nach circa vier Tagen wieder erreicht werden konnte, war ich mit meiner Domain längst weggezogen. Um das machen zu können, ist es natürlich wichtig, einerseits seinen Domainregistrar und seinen Webhoster nicht in einem Anbieter vereint zu haben, andererseits selbst Backups seiner Daten anzulegen. Beides empfehle ich allen, die eine Internetseite nicht nur als unwichtigen Spaß am Rande betreiben.

Fazit

Mein persönliches Ziel habe ich erreicht und auf dem Weg dahin Manches gelernt. Ich freue mich über das Ergebnis bei der Formularverschlüsselung. Daher tut es mir fast Leid, zu keinem versöhnlichen Schluss kommen zu können und ebensolches über den Webhoster AwardSpace zu sagen. Selbst wenn man die Ausfälle als außergewöhnlich annimmt und als kostenloser Kunde seine Erwartungen gering hält – ein positives Urteil nach dieser Woche wäre lächerlich. Ich bin davon überzeugt, dass auch AwardSpace den Anspruch an sich selbst höher ansetzt, als es meinen Erfahrungen mit dem Anbieter während der vergangenen Woche entspricht, und nicht zufrieden sein kann.