PHPIDS, WPIDS

php

Auf PHPIDS bin ich in der c't 10/2009 (S. 164 ff) gestoßen. Es geht um ein PHP-Script, das, in alle öffentlich zugänglichen Scripte einer Webseite eingebunden, Einbruchsversuche erkennen soll. Diese werden dann geratet, und der Webmaster im Zweifelsfalls per Email informiert. Klingt erstmal gut, vor allem aus folgenden Gründen:

  • Neuerdings werden Email-Benachrichtigungen über neue Kommentare hier im Blog nicht mehr zugestellt. OK, sie gehen an die Absenderadresse zurück, die ebenfalls meine ist, aber eben sehr verzögert. Fehlermeldung: "Too many bad recipients, are you an address harvester?" Vielleicht werden von meinem Server aus SPAM-Mails verschickt? Vielleicht auch nicht. Da es nur ein virtueller Server ist, muss es nicht mal "mein" Server sein, wer weiß.
  • Es gibt das Ganze auch als WordPress-Plugin 🙂

Das Dumme an diesem Plugin: So lange es aktiviert ist, geht der Bilder-Upload nicht mehr, Fehlermeldung (sinngemäß aus dem Gedächtnis): "Are you sure you want to do this? Try again"; der angebotene Link führt dann aber aus dem Backend auf den eigentlichen Blog. So viel dazu.

PS: WordPress Version 2.7.1, WPIDS 0.1.2

XMLHttpRequest.responseText mit XML *und* Javascript [UPDATE]

ajax

"Normalerweise" besteht so ein responseText aus einem XML-Fragment. Das baut man dann dynamisch in seine Seite und gut ist. Javascript wird dabei nicht mehr ausgeführt.

Ein Trick zum dynamischen Abrufen (und Ausführen) von JS besteht darin, dass der responseText an eval() übergeben und so ausgeführt wird... dazu muss der responseText aber natürlich reines JS sein.

Wenn man nun aber beides will, so erzeuge man einen responseText a la

und voila (hier am Beispiel von ExtJS):

hier nun der Zauber:

Der Trick ist also einfach: Packe das JS in einen <script>-Knoten, und gebe diesem eine ID, um darauf zugreifen zu können 🙂

NACHTRAG: In ExtJS kann man natürlich auch einfach den Parameter loadScripts von Ext.Element.update() nutzen 😀

[Firefox] ExternalInterface.call() von außerhalb „der Bühne“

firefox

Man liest von ExternalInterface-Problemen, die darauf basieren, dass von Javascript aus AS-Funktionen aufgerufen werden, bevor das SWF geladen ist - etwa bei onLoad. Als Lösung gilt: "Rufe aus dem SWF heraus eine JS-Funktion auf. Dann (und erst dann) weiß JS, dass das SWF bereit ist."

So weit, so gut.

Was man dazu wissen muss, und was man deutlich weniger schnell findet im Netz: Ein SWF, das außerhalb des sichtbaren Bereiches liegt (etwa bei "position: absolute; top: -10px; left: -10px;"), ruft im Firefox 3/Windows keine ExternalInterface-Funktion auf. Gar keine, nie. Obwohl ExternalInterface.available true ist, und obwohl das SWF eigentlich angezeigt wird.

HTH.

SPAM Filter.

spam

Wo ich gerade mal wieder eine SPAM-Mail bekommen habe, möchte ich auf meine seit Jahren gepflegte Blacklist verwiesen: www.crusy.net/files/spam.txt

Sie ist recht restriktiv, aber auch recht erfolgreich (trotzdem gilt, wie sowieso, dass man regelmäßig in seinen SPAM-Ordner schauen muss)... zusammen mit zwei drei Filterregeln kommen vielleicht 5 SPAM-Mails in mein Postfach pro Jahr.