pLANer für WordPress

Derzeit setzen wir im NetNight2000 Verein verstärkt auf WordPress. Um auch für kommende Veranstaltung mit WordPress arbeiten zu können wird derzeit eine kleine Variante von pLANer als WordPress-Plugin umgesetzt. Hierbei wird es erst einmal nur die grundlegenden Features die wir für pLANer angedacht haben in das Plugin implementiert. Dazu zählen was die Seitenbesucht betrifft natürlich ein Anmeldeformular. Auch eine Teilnehmerliste kann abgerufen werden.

Für die Admins gibt es dann noch ein paar weitere Details. Hier können die alle Daten der Benutzer angesehen und verändert werden, wenn dies nötig sein sollte. Auch das Löschen von Teilnehmern einer Veranstaltung ist schnell erledigt. Ganz wichtig ist auch die Auswahl der aktuellen LAN-Party und die Übersicht aller registrierter Clans.

Das ganze System greift auf die Tabellen von pLANer zurück. WordPress-Tabellen müssen sich deshalb in der gleichen Datenbank befinden, wie die übrigen pLANer-Tabellen.

Durch das Plugin können wir erst einmal WordPress für den Internetauftritt verwenden. Später kann man sich dann entscheiden, ob für das Web pLANer verwendet wird oder nicht. Im Intranet selbst soll jedoch nur pLANer während einer LAN eingesetzt werden.

Formulare in WordPress-Plugins per Session absichern

Es kommt vor, dass man Formulare durch eine zufällige Zeichenfolge vor erneutem Versenden schützen möchte. Um diesen Wert zu speichern, bietet sich die Session des aktuellen Benutzers an. Auch kann dadurch niemand mit einem selbstgebastelten Formular Daten übermitteln. Eine wichtige Schwachstelle wäre dadurch geschlossen.

Will man dies jedoch in einem WordPress-Plugin machen, steht man vor dem Problem, dass WordPress keine Sessions verwendet. Man könnte natürlich auch ein Cookie verwenden, aber nicht alle Besucher lassen Cookies zu. Die Session ist also unsere erste Wahl.

An sich ist das Ganze auch recht simpel. Es reicht, wenn man per add_action() bei ‚init‘ eine simple Funktion aufruft, die prüft, ob bereits eine Session besteht und wenn nicht, diese startet. Somit haben wir eine aktive Session in die wir einen Zufallswert speichern können.

Generieren wir nun unser Formular benötigen wir eine zufällige Zahl, besser sogar eine zufällige Zeichenfolge. Diese wird im Formular als verstecktes Feld eingebunden. Beim Empfang des Formulars wird dann geprüft, ob der Eintrag des Formulars mit der Session übereinstimmt. Als erstes sollte nun der Eintrag in der Session wieder gelöscht oder geleert werden.

Man ist jedoch damit nicht auf WordPress beschränkt, dies funktioniert natürlich überall in PHP wo mit Sessions gearbeitet wird. Zur Absicherung auf jeden Fall zu empfehlen.