Wer in der letzten Zeit meinen Blog und die Kommentare verfolgt hat, wird verärgert festgestellt haben, dass sich unerfreulich viel SPAM in den Kommentaren fand – für Designer-Klamotten und sonstigen Schwachsinn den kein normaler Mensch braucht und der mit Sicherheit nicht zu der Klientel passt, die diesen Blog aboniert hat oder liest. Anfänglich habe ich es noch als „passiert leider auch mir“ hingenommen und habe manuell gelöscht …
Nun dachte ich eigentlich, dass ich mit der eingebauten Sicherheitsfunktion von MyBloggie hier recht gut gegen solchen Schwachsinn gewappnet zu sein. Immerhin muss jeder ja ein kleines Captcha lösen. Wie es mir erschien war das aber wohl mittlerweile in die Jahre gekommen und dementsprechend geknackt. Zugegeben – es war wirklich einfach, keine großartig verschwurbelten Zahlen oder Zeichenfolgen, einfach nur eine kleine Grafik, die es abzutippen galt.
Nun gut, was macht der geneigte und genervte Admin? – Erster Blick: Gibts ein Update, dass ich übersehen habe und möglicherweise schon tut was ich brauche. Leider Fehlanzeige – irgendwie scheint das MyBloggie-Projekt nicht mehr groß gepflegt zu werden, was ich etwas schade finde. Aber es ist ja OpenSource und in PHP geschrieben, von daher: werfen wir doch mal einen Blick in den Code, vielleicht lässt sich da ja etwas machen.
Beim Code hat es mich dann erst mal etwas Mühen gekostet, ihn auf meinem Testsever überhaupt zum Laufen zu bewegen, denn man verwendete noch ganz altmodisch die kurzen Einleitungstags für PHP
<? PHPCode kommmt hier dazwischen ?>
anstelle der mittlerweile üblichen und „sichereren“ langen Ausführung:
<?php PHPCode kommmt hier dazwischen ?>
Gut, das war dann also mal zum Warmwerden, und ein paar Regex-Schubsereien sind auch immer mal wieder ganz gutes Gehirn-Jogging.
Richtig ärgerlich wurde es dann beim eigentlich Code für das Captcha – ich habe es mir angeschaut und mir war klar: Wenn ich es will, kann ich mir mit wenig Aufwand einen Bot basteln, der mir die notwendigen Berechnungen quasi synchron gegen rechnet. Das hat man davon, wenn die Zeit als Grundlage für die Zeichenfolge herhalten muss. Der nächste Fehler: Der erzeugte Code wird zwar pseudo-verschlüsselt, landet aber direkt im HTML-Formular und wird beim Abesenden mitgeschickt 😯 – noch einfacher geht es ja kaum. Da der Quellcode frei verfügbar ist, kann jeder sich anschauen wie es gemacht wird und kann sogar noch vor dem Absenden prüfen ob die Zeichenfolge die er ausgerechnet hat auch passt – mit heutiger Rechenleistung kann man das natürlich auch für eine etwas größere Zeitspanne sehr zügig machen bis man einen Treffer landet. Ich weiß nicht ob die Angreifer das so gemacht haben, aber wenn ich es machen müsste, würde ich es so versuchen. Auch musste ich feststellen: Die Bilder für die einzelnen Zeichen der Zeichenfolge sind hardcodiert hinterlegt, ändern sich also nicht bei jedem Aufruf. Sonst hätte man ja auch einfach mal die Bilder entsprechend austauschen können oder für jeden Buchstaben zumindest mal einen ganzen Satz mit verschiedenen Verzerrungen und Verkippungen nehmen können.
Also nix mit mal eben was einbauen, damit der Unfug aufhört. Nun stellt sich der geneigte Administrator natürlich die Frage: Selbst was entwickeln oder gibt es möglicherweise fertige Lösungen die man verwenden kann und die nur drauf warten eingebaut zu werden oder sich zumindest einfach adaptieren lassen.
Natürlich gibt es sowas – leider nicht als Plug and Play-Lösung oder Modul für MyBloggie. Ich habe mich für das Recaptcha-Projekt entschieden, es ist recht einfach einzubinden und gut dokumentiert. Auch wenn da partiell Google mit drinsteckt. Die Auslagerung hat auch andere Vorteile: Dort beschäftigen sich Profis mit dem Thema und es gibt immer wieder Verbesserungen, die man automatisch eingebaut bekommt, ohne nochmals den Code dafür anfassen zu müssen. Also definitiv besser als jede Lösung die ich mir zeitraubend aus den Fingern gesaugt hätte.
Der Einbau in MyBloggie ist denn auch kein Hexenwerk – der Code ist halbwegs vernünftig dokumentiert und so findet man relativ schnell die Stelle an der es um das Captcha geht – den alten Code stilllegen (nicht löschen) und dann die von reCaptcha gestellte Bibliothek einbinden und die notwendigen Funktionsaufrufe gemäß der ausführlichen Anleitung aus dem Beispiel tätigen, fertig ist der Lack.
Ich werde das jetzt die nächsten Tage mal testen und sehen wie gut es funktioniert – ich hoffe mal, es ist jetzt erst mal Ruhe mit Blog-Spam. Und einen schönen Gruß an die Leute die es nötig haben sich solche Bots einfallen zu lassen: Könnt ihr eure Kreativität nicht sinnvoller einsetzen – viele Projekte im Web warten nur darauf angegangen zu werden – es ist ja nichts dagegen einzuwenden Sicherheitslücken zu suchen und auch zu finden – nur sollte man dann auch den Mut haben eine Lösung öffentlich zu machen, wie man diese Dinger abstellt. Die Webgemeinde wird es danken.