Microsoft Office Open?

Das ist mal was neues: Microsoft will die Office-Fileformate offen gestalten. Mitte 2006 erscheint Office 12, und damit soll alles, was sich früher DOC, XLS oder PPT nannte im XML-Format laufen. Und noch mehr:

Schemas will be open, fully documented and carry a „perpetual“ royalty free license.

Das gleiche Format wird sowohl das Windows-Office als auch das für den Mac verwendet werden.

Übrigens: bin ich der einzige, dem aufgefallen ist, daß plötzlich überall in der MSDN diese schicken, kleinen, orangenen RSS-Buttons auftauchen?

[Edit 20:16 Uhr]
Auch auf Channel 9 zu sehen… 😉

SouthTrust Bank Phishing

Heute ist die SouthTrust Bank dran.

Ist ganz spaßig gemacht. Wenn ich das richtig sehe, dann öffnet die Seite, sobald man sie aufruft, ein kleines Popup-Fenster ohne Rahmen und versucht, es über das Adress-Feld im Browser zu legen. Und in dem Fenster steht dann die URL der Seite aus, die der Phisher vorzugeben versucht.

SouthTrust Bank Phishing

Zumindest auf meinem Rechner trifft er aber das Feld nicht wirklich. Netter Versuch – aber etwas amateurhaft 🙂

Hack-A-Phish

Die Selbstjustiz ist mal wieder schneller als die Polizei erlaubt: Selbsternannte Phishing-Jäger gehen auf Phischer los und hacken deren Seiten. Statt dem Eingabeformular gibt’s dann die Info, daß man auf einen Trick hereingefallen sei und seine Infos nicht so einfach eingeben sollte.

Ob das rechtens ist ist nicht ganz klar – immerhin wird in ein fremdes System eingedrungen und dort etwas verändert. Das ist an sich illegal. Aber wie sieht es aus, wenn man durch diese illegale Aktivität eine andere illegale Aktion verhindert? Ich meine, auch Tötung zur Selbstverteidigung ist erlaubt… Ist zwar ein ziemlich krasser Vergleich, aber meiner Meinung nach gar nicht so sehr an den Haaren herbeigezogen…

Meine Meinung ist relativ klar. Ich finde das gut – und wenn es nach mir ginge, würde ich auch mit viel härteren Maßnahmen gegen die Betrüger im Prepaidkarten-Shop von Verivox vorgehen. Es gibt da sicher Möglichkeiten mit ActiveX oder so. Dummerweise hat man hier immer etwas Kollateralschaden, so daß es auch das ein oder andere „normale“ Opfer erwischen würde – und daher steht es halt außer Debatte… Nur bei den Phishing-Seiten gibt es halt nur ein einziges Ziel – und das ist sehr eindeutig identifizierbar. Daher: Thumbs Up!

Yahoo! Mindset

Nicht nur Google testet manchmal neue Features, auch Yahoo fängt jetzt damit an: Mindset ist eine Suchfunktion, bei der der angeben kann, ob er auf Informationssuche oder auf der Suche nach Shopping-Seiten ist. Mittels eines Schiebereglers (den yahoo erst mal anhand des Suchqueries voreinstellt) kann man festlegen, was man haben will (So ein bissel „shopping“ aber vor allem „research“ oder „shopping only“ oder so).

Macht einen ziemlich soliden Eindruck und ist von der Idee her genial 🙂 – nur leider ist es derzeit wohl nur für englische Seiten verfügbar und ich bin mir auch sicher, daß Suchmaschinen-Spammer wege finden werden, um diese Filterung zu umgehen…

Deutsche Bank Phishing

Oh, heute ist die Deutsche Bank dran… Die Webseite dazu ist aber leider schon gelöscht – „due to non-ethical and/or abusive activity.“

Dear Deutsche Bank Customer,

We find that some of our members no longer have access to their email addresses. As result Deutsche Bank server
sent this letter to verify e-mail addresses of our clients. You must complete this process by clicking on the link
below and entering in the small window your Deutsche Bank online access details:

[LINK]

Informationen zu Medien-Dateien

Momentan schraube ich an den Bildergalerie von Spherical Bytes rum und bin – da ich das ganze wie üblich zum allwissenden Weltherrschaftsübernahmetool ausbaue – auf die Grenzen von PHP gestoßen. Ich möchte nämlich nicht nur eine „Bildergalerie“ haben, sondern eine Media-Galerie, die auch Videos und Audio-Dateien futtert.

Nur kann PHP eben mit Bild-Dateien ganz problemlos umgehen, aber wie bekomme ich Informationen über die Laufzeit eines Videos oder einer MP3-Datei? Mit den Bordmitteln gar nicht – aber es gibt ja jede Menge andere Leute, die die gleichen Probleme haben wie ich. Und die waren schon fleißig und haben getID3() gebaut. Ein weiteres Beispiel für einfach zu verwendende aber sehr leistungsfähige Open Source Software!

Sicherheit und Geschwindigkeit

Seit einiger Zeit gibt es auf 4cheaters.de jetzt schon die Forums-Funktionalität. Anfangs habe ich ja eigentlich gar nicht wirklich damit gerechnet, daß hier viel passieren wird, aber inzwischen ist da richtig was los. Mittlerweile sind weit über 12.000 Beiträge geschrieben worden.

Zeit für mich, das ganze mal wieder etwas genauer unter die Lupe zu nehmen. Wenn auch zugegebenermaßen etwas unfreiwillig, weil ein Störenfried am letzten Wochenende gewütet hat und in wenigen Minuten 90 mal den gleichen Beitrag geposted hat. Damit ist einerseits natürlich die Webseite übergelaufen und andererseits haben die Leute auf meiner Seite die Möglichkeit, sich per E-Mail über neue Beiträge in einem Thread informieren zu lassen. Im entsprechenden Board zu Vampire: The Masquerade – Bloodlines nutzen momentan etwas mehr als 20 Leute diese Funktion. Ergo: knapp 2000 Mails gingen da sinnloserweise raus.

Ergo: Generalüberholung ist angesagt.

Schritt eins war relativ schnell realisiert: Eine maxmiale Zahl von Posts pro Zeitabschnitt pro IP-Adresse. Dazu speichere ich jetzt (endlich) die IP zu jedem Beitrag. Hätte ich schon früher machen sollen. Mit einer einfachen SQL-Abfrage kann man dann ganz einfach erkennen, wie viele andere Posts von dieser IP in den letzten 3 Minuten kamen. Sind es 3 oder mehr, dann muß der betreffende erst mal ein bisschen warten. Jenachdem, ob das reicht, kann ich notfalls auch noch eine weitere Stufe einbauen, z.B. maximal 10 Posts pro Stunde oder so. Ich gehe aber mal davon aus, daß das Störenfrieden relativ schnell den Spaß (?) verdirbt.

Schritt zwei ist auch nicht viel schwieriger: Bisher kam es relativ häufig vor, daß Leute ihre Posts doppelt eingetragen haben. Ich denke, das geschieht einfach durch einen – gewollten oder ungewollten – Doppelklick auf den „Absenden“-Knopf oder durch das drücken des Reload-Buttons. Das wurde bisher nämlich nicht abgefangen. Der Doppelklick wird ab sofort schon mal durch ein kleines Javascript erschwert:

<input type="submit"
value="Absenden"
id="submitbutton"
onclick="window.setTimeout('document.getElementById('submitbutton').disabled = true;', 10);">

Dadurch wird der Knopf nach dem drücken ausgegraut und kann nicht mehr angeklickt werden. Das ist aber noch nicht alles. Im Formular übergebe ich jetzt auch noch ein verstecktes Feld mit einer einmaligen ID:

<input
type="hidden"
name="comment_session"
value="<?PHP echo md5($_SERVER[REMOTE_ADDR] . date("D M j G:i:s T Y")); ?>"/>

Diese wird beim Abspeichern überprüft und damit werden Doppel-Posts effektiv verhindert.

Und jetzt kommt der dritte und momentan letzte Schritt, der allerdings mit der ganzen Störenfried-Thematik nichts zu tun hat:

Wie schon geschrieben, habe ich beim Entwickeln der Forums-Funktion nicht mit einem durchschlagenden Erfolg gerechnet. Der kam aber, und damit wurde alles sehr, sehr langsam. Das Erzeugen der oben verlinkten Seite hat zwischen 20 und 50 Sekunden gedauert – und der Webserver war in dieser Zeit sehr beschäftigt. Das Problem war die Darstellung des Threads in der Baumstruktur.

Der Einfachheit halber habe ich dazu einen rekursiven Ansatz gewählt und diesen auch nicht wirklich optimiert. Es wurden daher ein mal alle Beiträge aus der Datenbank gelesen. Danach wurde die Darstellung gestartet, die auf dem Prinzip basiert, daß jedes mal, wenn ein Beitrag dargestellt wurde, wieder alle anderen Beiträge durchsucht wurden, ob sie in der Hierarchie unter dem gerade dargestellten liegen. Bei 10 Beiträgen ist das nicht weiter wild. Macht 10×10 = 100 Überprüfungen. Wenn jetzt aber wie zum Beispiel bei Counterstrike etwa 600 Beiträge da rumlungern, dann sind wir schon bei 600×600 = 360.000 Vergleichen -> Laaangsaaam 😉

Der neue Ansatz ist wesentlich Resourcen schonender:
Es wird ein mal am Anfang zu jedem Beitrag ein „Hierarchie-String“ erzeugt. Das könnte etwa so aussehen:

0001
0001-0002
0001-0003
0001-0003-0004
0005-0006

Hier hat also das Root-Element die Unter-Elemente 1 und 5. Element 1 wiederum hat die Unter-Elemente 2 und 3, von denen 3 noch das Element 4 enthält. Element 6 liegt in Element 5.

Das Aufbauen eines Hierarchie-Strings ist relativ einfach möglich, indem man jeweils den String des Parent-Elements nimmt entsprechend erweitert. Auch einfach ist es danach, diese Strings zu sortieren – in PHP am geschicktesten mit der Funktion asort(). Und danach muß man nur noch ausgeben. Eigentlich interessiert einen an diesem Punkt die Hierarchie an sich gar nicht. Man muß nur entscheiden, wie weit man seine Elemente einrücken muß – und das kann man aus der Länge des Strings ablesen.

Ergebnis: von 20 Sekunden (im bisher besten Fall, wenn dem Server sonst langweilig war) runter auf 0.2 Sekunden (wenn der Server ganz normal arbeitet). Was so ein Algorithmus ausmachen kann…

Schritt vier wird demnächst folgen: Das Ein- und Ausblenden von Threads durch das Klicken auf kleine „+“ und „-“ Icons, ähnlich wie es z.B. im Explorer mit den Verzeichnissen auch funktioniert. Ich muß mich nur noch entscheiden, welchen Ansatz ich hier nehme. Ich würde ja gerne auf DHTML setzen. Die Art, wie Microsoft das in der MSDN-Seite gelöst hat gefällt mir nämlich super-gut 🙂 – nur macht das so viel Arbeit…

Virtual Earth

Das ist ja mal cool: Ich habe gerade Channel 9 gefunden. Das ist eine Kommunikationsplattform von Microsoft, in der internas ausgeplaudert werden… Dort werden offensichtlich neue Produkte vorgestellt und gezeigt, woran die Microsofties gerade so arbeiten.

Ich bin drüber gestolpert, als ich mir das Video zu Virtual Earth angeguckt habe – einem richtig coolen Map-Tool, das komplett im Browser läuft.

Und irgendwie zwingt sich mir beim schauen des Videos ein Eindruck von Microsklaven auf.

Danach hab ich noch so ein bissel in den anderen Videos auf der Seite rumgezappt. War spaßig und auf ein mal waren zwei Stunden weg – nicht mit irgendeinem Thriller oder sonstigen Spielfilm, sondern mit Microsoft-Internas. Und wieder was gelernt…

Erstens waren da Infos über Vorstellungsgespräche bei Microsoft, wenn man mal als Entwickler einsteigen will.

Und zweitens bin ich bei Avalon hängengeblieben. Ich meine, wenn man den Amiga-Boing von vor 20 Jahren in ein paar dutzend Zeilen Code entwickeln kann… Irgendwie geil. Ich seh noch nicht ganz den praktischen nutzen – irgendwie vermute ich, daß wir dann wieder größere Bildschirme brauchen, weil wegen dem ganzen 3D nichts mehr in die vorhandenen Punkte reinpasst… Aber eines muß man dem ganzen lassen: Cool ist es schon!

Daten-Zugriff für $200

Das ist mal frech: Eine neue Idee von Internet-Kriminellen ist, Daten auf einem Opfer-Rechner zu verschlüsseln und dann ein Lösegeld für die Entschlüsselung zu verlangen. Nennt man das dann „Datanapping“?

„I would see this as the equivalent of somebody coming into your house, putting your valuables in a safe and not telling you the combination,“ Friedrichs said.

Möglich macht es der Trojaner Pgpcoder, der zum Beispiel über eine entsprechend präparierte Webseite in das Ziel-System eingeschleust wird…

Passwörter und das Aufschreiben derselben

Bei c|net ist ein Artikel erschienen, in dem ein Sicherheits-Mensch von Microsoft sich zum Thema Passwörter und dem Aufschreiben derer auslässt.

„How many have (a) password policy that says under penalty of death you shall not write down your password?“ asked Johansson, to which the majority of attendees raised their hands in agreement. „I claim that is absolutely wrong. I claim that password policy should say you should write down your password. I have 68 different passwords. If I am not allowed to write any of them down, guess what I am going to do? I am going to use the same password on every one of them.“

Und ich muß sagen: Recht hat er. Allerdings schreibe ich mir meine Passwörter nicht auf Papier auf, sondern mit dem Programm KeePass. Sehr zu empfehlen.