Heute war ich im Zoo Frankfurt (alleine! man glaubt es kaum!). Unter anderem hat mir deren Exoterrahaus sehr gefallen. Die haben sich mit der Einrichtung sehr viel Mühe gegeben. Kann man sich viel abkupfern. Hier mal ein paar Beispiele.
2013-03-23 - Ein Traum, die Felsen hier scheinen echt zu sein:
2013-03-23 - Passt im Zoo Frankfurt auch immer alles zusammen, Farben, Licht etc:
2013-03-23 - Das nenn ich mal eine Rückwand:
2013-03-23 - Hier ein gemalter Gradient an der Wand:
2013-03-23 - Ein Gehege für Makaken oder sowas:
2013-03-23 - Man beachte den bemalten Hintergrund:
Sascha Grammel fand ich ja super genial. Schade nur, dass er immer das gleiche im Programm hatte. An der Front scheint sich wohl was zu tun, im Juni kommt eine neue DVD raus:
Sehr schön, sehr schön. Wieder was, worauf man sich freuen kann!
Ich habe heute in meinem Kommentarformular eine Captchafunktion eingebaut, weil immer mehr SPAM aufgeschlagen ist. Man muss eine simple Rechenaufgabe lösen, damit der Kommentar angenommen wird. Kommentare sind bei mir zwar immer moderiert, deswegen nerven mich die täglichen Notifications über Kommentarspam trotzdem.
Das sollte daher nun vorbei sein.
Viagra, my ass!
Update 2013-03-22:
Bleibt spannend. Sind natürlich immer noch SPAMer unterwegs, die nun auch nicht mehr durchkommen. Aber nun kriegen die alle einen HTTP 500 Error (d.h. Django stirbt da weg):
</p>
- - [22/Mar/2013:04:51:39 +0100] "GET /blog/2011/04/24/2/neu-gemessen/ HTTP/1.1" 18957 200 "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5" "-"
- - [22/Mar/2013:04:51:40 +0100] "POST /blog/2011/04/24/2/neu-gemessen/addcomment/ HTTP/1.1" 4719 500 "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5" "/blog/2011/04/24/2/neu-gemessen/"
Und das, obwohl meine ganze Maschinerie mit Exceptions funktioniert, die sollte dann eigenltich auch einen Django-Tod abfangen. Ich hab jetzt mal Error-Mailing aktiviert. Dann krieg ich nen Stacktrace und Environment gemailt, wenn das passiert. Ich bin ja gespannt wie Hulle, was die da eigentlich genau machen.
Update 2013-03-21:
So. Nachdem meine erste - primitive Variante - nicht ausreichend war, habe ich jetzt aufgerüstet. Ich bin den ausgezeichneten Ratschlägen von Web ohne Barrieren gefolgt und bin jetzt - denke ich - happy mit der Lösung.
Im Einzelnen habe ich jetzt eine dreistufige Verteidigungslinie gegen SPAMer:
Stufe 1: Ein Timing Cookie
Das funktioniert wie folgt: wenn man ein einzelnes Blogposting aufruft, bekommt
man einen Cookie mitgeliefert. Der Cookie beinhaltet den Timestamp des Zeitpunkts wo
die URL aufgerufen wurde und eine Signatur aus Timestamp und einem Salt per
SHA256.
Wenn das Kommentarformular gepostet wird, prüft Django eine Reihe von Dingen:
Der Cookie muss grundsätzlich vorhanden sein
Der Cookie muss den Timestamp UND die Signatur beinhalten
Die Signatur muss richtig sein!
Der Timestamp darf nicht jünger als 10 Sekunden sein
Wenn einer dieser Punkte nicht zutrifft, wird die Session throttled. Das
bedeutet, dass im Django an der Stelle ein Delay eingebaut ist, der den SPAMer
aufhält.
Stufe 2: ein Honeypot Formularfeld
Im wesentlichen handelt es sich einfach um ein weiteres Formularfeld des
Kommentarformulars. Dieses ist aber im normalen Browser nicht sichtbar. Dadurch
wird es von einem Besucher auch nicht ausgefüllt und in dem Fall ist alles gut.
Wenn aber ein Bot dieses Feld ausfüllt, dann passieren zweierlei Dinge: zum einen
kommt wieder das oben erwähnte Throttling zum Einsatz. Und zum anderen - sollte
der SPAMer so geduldig sein - gibt es eine Fehlermeldung, das Formular sei falsch
ausgefüllt (freilich ohne Hinweis, dass das Feld LEER sein muss, damit Django happy
ist!).
Stufe 3: Logikfragen als Captcha
Das hatte ich im Prinzip auch schon vorher. Nur da waren es noch einfache
Rechenaufgaben. Jetzt sind es logische Fragen, die sich durch blindes maschinelles
Übersetzen nicht so ohne weiteres beantworten lassen. Einfach mal hier unter
diesem Posting die Frage anschauen, dann versteht man, was ich meine. Gerne
öfter Reloaden - es gibt einen Pool an Fragen.
In der Summe ist es ziemlich unwahrscheinlich, dass es ein SPAMer nun durch meine Verteidigungslinien schafft, während es für echte Menschen weiter so einfach ist, wie nur irgend möglich. Der einzige Nachteil ist, dass die Fragen derzeit nur auf deutsch vorliegen. Eventuell erweitere ich das noch auf englisch. Dazu müsste ich aber ohnehin eine englische Version der Seite anbieten, was ich sowieso schon länger vorhabe.
Es ergibt sich, dass ich mich momentan fernab der sonst üblichen ländlichen Gefilde aufhalte und mir dachte: nutz das mal aus und geh in den Dehner und schau mal, ob Du dort ein paar schöne Wurzeln fürs neue Aquarium abgreifen kannst.
Ich also durch Wind und Wetter 15 Minuten von der S-Bahn-Station zum Dehner gelatscht. Und was finde ich dort vor? Nur Mist! Die paar Wurzeln, die es dort überhaupt gab, sind der Rede nicht wert. Da hab ich in meinem Komposthaufen bessere.
Hab ich mich vielleicht geärgert.
Und Bartagamen haben die da. Natürlich nicht artgerecht gehalten. Eine beschissene Sparlampe und einen Heizstrahler drin und das wars. Doppelt ärgerlich.