Archiv

Artikel Tagged ‘Plugin’

WordPress – Mehrere Gallerien in einem Artikel nutzen

28. Juni 2012 Keine Kommentare

Aus aktuellem Anlass, da mir bei meinem vorigen Beitrag dieses Problem begegnete: Man kann mit den Bordmitteln von WordPress die Gallerie eines Artikels anpassen, allerdings nur händisch. Ein schönes Menü mit Klick-Optionen sucht man hier vergeblich. Doch auch wenn es sicherlich komfortabler geht, verzichte ich mal auf die Installation weiterer Plugins und nutze die vorhandenen Möglichkeiten. Auf den Support-Seiten von WordPress.com gibt es eine gute Übersicht über die Möglichkeiten der Gallerien.

Aber worum geht es überhaupt? Manchmal läd man zu einem Artikel eine Vielzahl an Bildern hoch. Eins soll als Artikelbild genutzt werden und oben auf der Seite stehen, andere evtl. als Gruppe mitten im Text angezeigt werden und wieder andere Bilder zur genaueren Erleuterung im restlichen Text eingestreut sein.

Einzelne Bilder sind auch kein Problem, die kann man platzieren, wie man möchte. Aber gleichzeitig werden alle zu einem Artikel hochgeladenen Bilder auch zu einer Gallerie zusammen gefasst, welche man ebenfalls automatisch formatiert in den Artikel einbinden kann. Nur soll diese Gallerie u.U. nicht alle hochgeladenen Artikelbilder enthalten, sondern nur einige bestimmte. Und genau darum geht es mir.

Option Description Choices Default Setting
columns Number of columns used to display the images An integer greater than 0 3
link How each image will be linked file file
orderby How to order the images ID, menu_order, rand, title + ASC, DESC menu_order ASC, ID ASC
size Size of the images to display thumbnail, medium, large, full thumbnail
id The gallery will display images which are attached to that post. Any post or page ID that has images attached to it Default is to show the gallery post
include The gallery will include specific images comma separated attachment IDs* (include=”23,39,45″) N/A
exclude The gallery will exclude specific images comma separated attachment IDs* (exclude=”24,30,43″) N/A

Besonders interessant ist für mich die Möglichkeit, bestimmte Bilder mittels exclude aus der Gallerie auszuschließen oder Bilder aus anderen Artikeln mittels include der Gallerie hinzufügen zu können.

Von Becky! Internet Mail zu Thunderbird wechseln

27. Juni 2012 Keine Kommentare

Seit Jahren nutze ich das Mail-Programm Becky! Internet Mail des japanischen Herstellers RimArts. Flink, klein, übersichtlich und vorbildlich ressourcenschonend. Startet in Sekundenbruchteilen und verbraucht selbst nach Tagen des Betriebs und unzähligen gelesenen Mails nie mehr als 10 MB Speicher, eher deutlich drunter. Es ist einfach da, ohne sich groß bemerkbar zu machen.

Leider bin ich dennoch am überlegen, mich von diesem feinen Stück Software zu trennen, zumindest auf einigen Rechnern. Denn auf halbwegs aktuellen Rechnern ist so viel Speicher vorhanden, dass es kaum groß ins Gewicht fällt, wenn sich ein ressourcenhungriger Thunderbird einen guten Teil gleich mal reserviert. Auch wenn ich die Zahlen nach wie vor für maßlos übertrieben halte. Ein frisch entpackter und gestarteter Thunderbird Portable ohne eingerichtete Konten belegt sofort 115 MB des Arbeitsspeichers.

IMAP kann Becky! zwar, aber da gibt es komfortablere Programme, außerdem geht es mir zunehmend auf den Keks, HTML-Mails in einer mittelmäßigen Plaintext-Umwandlung betrachten zu müssen. Den IE als Renderer für Becky! zu aktivieren ist ebenfalls keine Option für mich, bin nach wie vor kein großer Freund von diesem Browser. Außerdem nutze ich inzwischen auch viel und gerne einen Kalender und hab so einige RSS-Feeds aboniert. Also muss mal ein neues und moderneres Programm her, und da bietet sich der Platzhirsch gradezu an, immerhin nutze ich auch gern den FF und Thunderbird kann ebenfalls durch Addons an die eigenen Vorlieben angepasst werden.

Wobei es langfristig wohl eher zu einem zentralen Online-Dienst gehen wird, der einen Sammeldienst für andere Konten anbietet und die Mails nicht nach einer bestimmten Zeit löscht. Mal schauen, wohin die Reise geht, erstmal kommt jetzt zumindest der Donnervogel zum Einsatz.

 
Der Umzug von Becky! zum Vogel

Zu einem Programm-Wechsel gehört natürlich, dass die bereits empfangenen Mails auch im neuen Programm verfügbar sind. War das Konto bisher via IMAP eingebunden, erledigt sich diese Anforderung von allein. War das Konto zuvor jedoch als POP3 eingerichtet, womöglich mit Löschung auf dem Server nach Abholung, dann muss man selbst ein wenig Hand anlegen. Die hierfür nötigen Funktionen sind in Becky! bereits integriert, man kann also Out-of-the-Box mit der Sicherung seiner alten Mails beginnen.

   

Zuerst wählt man den Ordner aus, der exportiert werden soll. Im Beispiel die gesamte Inbox des Accounts. Anschließend klickt man auf File => Export. Im sich öffnenden Dialog hat man mehrere Möglichkeiten zu Auswahl. Welche die beste für einen ist, ist davon abhängig, wie die Konten bisher eingerichtet waren und wie sie in Zukunft genutzt werden sollen.

War das Konto als POP3 eingerichtet und wird auch in Thunderbird wieder als POP3 genutzt, könnte man die erste Option nutzen und als mbox speichern. Getestet hab ich es jedoch nicht, meine Konten sollen künftig alle via IMAP verwaltet werden, damit ich endlich synchrone Datenstände zwischen PCs und Smartphone habe. In ein IMAP-Konto können allerdings keine mbox Dateien importiert werden, somit wählt man Option 2: alle Mails als einzelne .eml Dateien speichern. Und nein, man muss das nicht für jede Mail machen, der Export verarbeitet das ganze Verzeichnis 😉

So, das war dann auch schon die halbe Arbeit. Da Thunderbird von Haus aus aber keine solchen Import- oder Export Funktionen besitzt, muss man zunächst noch ein Addon installieren, bevor es weitergehen kann: ImportExportTools. Nun richtet man zuerst die Konten in Thunderbird neu ein. Anschließend kann der Import der alten Mails erfolgen.

Wieder wählt man ein Verzeichnis aus, und ruft dann über die rechte Maustaste Importieren/Exportieren => Importiere Nachrichten auf. Im folgenden Fenster markiert man die Mails / Verzeichnisse, die importiert werden sollen und bestätigt die Auswahl. Kurz darauf sollten alle Mails im Thunderbird angezeigt werden. Kleiner Bonus: die so importierten Mails werden via IMAP auch auf den Server synchronisiert, so dass man diesen Vorgang nur einmal durchführen muss, alle anderen Clients haben im Anschluss den selben Stand.

Passwort-Verwaltung mit KeePass auf verschiedenen Plattformen

1. Juni 2012 Keine Kommentare

Passwörter, wohin man auch schaut. Blogs, Foren, Online-Shops und Spiele, Softwarezugänge privat wie beruflich, etc… die Flut an benötigten Passwörtern scheint nicht abreißen zu wollen. Viele verwenden daher für mehrere (im schlimmsten Fall alle) Zugänge die selben Anmeldedaten. Ach ja, und leicht zu merken müssen sie auch noch sein. Bequem für den einzelnen, aber zugleich auch das unsicherste, was man machen kann.

Artikel zu sicheren Passwörtern gibt es haufenweise, daher verzichte ich an dieser Stelle auf entsprechende Anmerkungen.

Mir ist es vor kurzem passiert, das einer meiner eMail-Accounts übernommen wurde. Selbst schuld, war hier doch noch ein recht einfaches Passwort im Einsatz, welches seit 6 Jahren nicht geändert wurde. Und zu meiner Schande muss ich gestehen, dass auch ich bei unwichtigeren Diensten gern Mehrfachnutzung betrieben habe. Das hat sich seit diesem Vorfall allerdings geändert.

Doch um mir die ganzen neuen Passwörter alle merken zu können, brauch ich etwas technische Unterstützung. Nach einer kurz gehaltenen Recherche habe ich mich für KeePass entschieden. Mehrfach ausgezeichnet, Open Source, durch Plugins erweiterbar und auf mehreren Plattformen verfügbar, was will man mehr von einem Passwort-Safe. Somit war eine meine Hauptanforerung, die Multiplattform-Unterstützung, abgedeckt.

Und praktischer Weise hat das Programm auch gleich einen Passwort-Generator integriert, den man mit eigenen Regeln füttern kann und speichern kann. Hat man größeres vor, kann man sich auch gleich eine ganze Liste möglicher Passwörter ausgeben lassen.

 
Zentrale Speicherstelle für Passwort-Datei

Windows, Linux, IOS, gern auch Android … an der „Cloud“ kommt man bei dieser Planung kaum vorbei. Für die Wahl der geeigneten Variante muss man sich aber genau die Möglichkeiten der eingesetzten Software auf jeder Plattform ansehen.

 
1. Dropbox

Dies ist meine derzeit eingesetzte Variante, was hauptsächlich an der eingesetzten IOS-App liegt, aber dazu später mehr. Dropbox ist auf allen Geräten verfügbar und daher eine gute Möglichkeit, seine Passwort-Datenbank synchron zu halten. Das man sich erst bei Dropbox anmelden muss, stellt einen zusätzlichen Schutz der Datei dar und ist erstmal positiv zu werten. Dass die Daten bei Dropbox unverschlüsselt auf den Servern liegen und jeder Mitarbeiter dran kommt, ist ein anderes Thema, aber der Safe selbst ist zum Glück auch nochmal verschlüsselt.

 
2. Server-Sync

Die Desktop-Version von Keepass 2.x hat eine eingebaute Sync-Funktion, welche die Synchronisation via FTP, HTTP und WebDAV ermöglicht. Möchte man Support für SCP, SFTP oder FTPS muss man zusätzlich das Plugin IOProtocolExt installieren. Noch mehr Möglichkeiten, wie beispielsweise Amazon’s S3, erhält man durch das Plugin KeePassSync.

Sehr bequem, wenn man einen eigenen Root- oder V-Server hat, bei dem man serverseitig noch eine Verschlüsselung durchführen kann. Andernfalls ist kein Mehrwert zur Dropbox-Variante vorhanden. Außerdem muss man hier drauf achten, welche Funktionen die IOS und Android Apps haben, denn viel habe gar keinen Sync-Support integriert, wodurch ein weiterer Vorteil verloren geht.

 
Desktop-Clients

Im Einsatz habe ich KeePass 2.x, sowohl unter Windows als auch Linux. Die Version hat mehr Funktionen und Plugins, ist dafür allerdings leider an das .NET Framework gebunden. Was zum Glück unter Linux dank Mono kein allzu großes Problem darstellt.

Wer auf die neueren Funktionen verzichten kann und keine zusätzliche Laufzeitumgebung auf seinem Rechner haben möchte, kann aber auch ganz beruhigt zu Version 1.x greifen. Dann steht allerdings nur noch die Dropbox-Variante für die plattformübergreifende Verfügbarkeit des Passwort-Safe offen, denn Version 1.x kann weder von Haus aus synchronisieren, noch gibt es entsprechende Plugins.

 
IOS-App

Da ich nur ungern Geld für Apps ausgebe, musste eine kostenlose KeePass App her. Passenderweise wird auf der offiziellen Webseite von KeePass auf eine kostenlose IOS-App verwiesen: MiniKeePass. Diese hat keinen eingebauten Sync-Support, eine Integration von Dropbox fehlt ebenfalls. Ansonsten tut sie, was sie soll. Sie öffnet den Passwort-Safe und lässt einen an die Daten ran.

Ein einmal übergebener Safe bleibt in der App für spätere Zugriffe erhalten. Die App selbst kann man durch einen 4-stelligen Zahlencode schützen, das Passwort für den Safe kann man speichern lassen, wenn man möchte, oder bei jeder Nutzung eingeben.

Gab es Änderungen an dem Passwort-Safe, muss man die Dropbox-App öffnen, den Safe anwählen und an MiniKeePass übergeben lassen. Die alte Version des Safe wird dann mit der neuen Version überschrieben.

Wie gesagt, mir reicht das. Möchte man einen echten Sync auf dem iPhone, muss man zu einer kostenpflichtigen App greifen.

 
Blackberry, Adroid- und WP7-Apps

Auf der offiziellen Download-Seite sind für diese Systeme ebenfalls die passenden Apps verlinkt. Aber da ich keine dieser Plattformen besitze, kann ich dazu auch nichts sagen.

 
Zugriff auf die Passwörter vom Browser aus

Kommen wir nun zum entscheidenden Punkt: den Zugriff auf die Passwörter. Schließlich möchte man der Bequemlichkeit halber auch gleich die Anmeldedaten fertig ausgefüllt bekommen, wenn man eine Webseite ansteuert.

 
1. Firefox

Für Firefox gibt es derzeit 2 nennenswerte Addons, welche den Zugriff auf den Passwort-Safe ermöglichen. Die komfortablere Möglichkeit bietet meiner Meinung nach KeeFox. Dieses Plugin integriert KeePass vollständig in den Firefox, wodurch der in Firefox integrierte Passwort-Manager überflüssig wird. Anmeldedaten werden automatisch ausgefüllt und neue Daten auf Wunschim Safe gespeichert, inkl. Webseiten-Informationen, die zum Auto-Ausfüllen benötigt werden.

 
2. Chrome

Das zweite Firefox-Addon heißt PassIFox und bedient sich wie auch die einzige Chrome-Erweiterung ChromeIPass des KeePass-Plugins KeePassHttp. Die Einrichtung ist nicht sonderlich schwer, man muss sich nur an die Anleitung auf der jeweiligen Addon-Seite halten.

1) Installiere KeePass
2) Installiere KeePassHttp, indem die Datei KeePassHttp.plgx im KeePass Installationsverzeichnis abgelegt wird
2a) Melde dich in KeePass an
2b) Kontrolliere, ob KeePassHttp korrekt installiert wurde (Tools > Plugins)
3) Rufe eine Seite auf, deren Daten in KeePass gespeichert sind
4) Klicke auf das KeePass Icon in der URL-Leiste und klicke auf den „Connect“-Button.
5) Wechsel zu KeePass und gib einen eindeutigen Namen für den Browser ein und speicher anschließend.
6) Ihre Passwörter werden nun sicher von KeePass empfangen und automatisch in Anmeldefelder eingetragen. Ggf. ist hierfür vorher noch eine Abfrage zu bestätigen.

Diese Addons arbeiten aber nur in eine Richtung, sie können nur Daten aus KeePass abrufen, jedoch keine neuen in KeePass speichern. Neue Einträge muss man direkt in KeePass manuell anlegen.

 
3. Andere Browser

Für andere Browsr gibt es keine derartigen Addons bzw. Plugins. KeePass hat jedoch eine Auto-Type Funktion, mit deren Hilfe es auch im Internet Explorer oder Opera genutzt werden kann. Man wählt dafür das erste Login-Feld an, wechselt dann zu KeePass und kann mit rechter Maustaste -> Auto-Type ausführen die zugehörigen Daten eintragen lassen.

WordPress Kontaktformular ohne Mail Versand

13. April 2012 Keine Kommentare

Möchte man für Besucher seiner Seite schnell und einfach erreichbar sein, bietet man ihnen einfach ein Kontaktformular an. Für diese Aufgabe gibt es auch unzählige Plugins. Dumm nur, wenn die Mail-Funktionen des Servers gesperrt sind. Pytal verbietet grundsätzlich erstmal den Versand, will man doch die eMail Funktion, so muss man betteln gehen. Einmal hab ich schon solch eine Anfrage gestellt, sogar nach den Vorgaben und Richtlinien im Forum, diese wurde aber trotzdem kommentarlos abgelehnt.

Daher musste nun erstmal ein Kontaktformular her, das in der Lage ist, die Formulardaten auf dem Server zu speichern, statt sie zu versenden. Recht zufrieden bin ich bisher mit MM Forms Community, da es dieer Aufgabe sehr gut nachkommt und wahlweise auch noch zusätzlich den Mailversand durchführen kann. Sobald die Funktion freigeschaltet sein sollte, kann ich also mit nur einem Klick in den Einstellungen wechseln, ohne mir ein neues Plugin suchen zu müssen.

Allerdings hat das Plugin auch einen kleinen Haken, zumindest temporär. Version 2.2.5 funktioniert im aktuellen WordPress nämlich nicht ganz fehlerfrei. Möchte man sich empfangene Nachrichten im Backend ansehen, erhält man lediglich eine Fehlermeldung. Die Anzeige der Nachrichten im Frontend hingegen funktioniert tadellos, nur geht deren Inhalt niemanden außer meiner einer etwas an 😉

Drum musste ein kleines Script her, welches in der Lage ist zu erkennen, ob grad jemand angemeldet ist und zudem noch über Admin-Rechte verfügt. Im WordPress Forum bin ich fündig geworden und hab die entsprechende Funktion gleich auf der Kontakt-Seite umgesetzt.

<?php global $current_user; get_currentuserinfo(); ?>
<?php if ($current_user->user_level == 10 ) { ?>
  [fοrmdata 1 "Kontaktformular"]
<?php } else {   ?>
  [fοrm 1 "Kontaktformular"]
<?php } ?>

Jetzt kann man mir unkompliziert Nachrichten senden und ich kann auf der selben Seite sehen, worum es denn überhaupt geht. Das einzige, was jetzt noch etwas skeptisch macht, ist das Captcha… das sieht mir etwas zu einfach aus, als das es wirklich effizient Spam-Bots abhalten könnte. Aber das wird sich erst noch zeigen müssen.

Mehr Sicherheit für WordPress

29. März 2012 Keine Kommentare

Nachdem ich mich in letzter Zeit ein wenig mit SEO beschäftigt habe, und die Seite dahingehend etwas optimiert habe, kam mir nun das Thema Sicherheit in den Sinn. Aber da dies mein erster Blog ist, kann ich diesbezüglich auf keinen allzu großen Wissenschatz zurückgreifen, sondern muss mich an den Hinweisen und Empfehlungen anderer orientieren. Als hilfreich habe ich dabei die foldenden Seiten empfunden:

Ich werde aber selbst auf die aus meiner Sicht wichtigsten Punkte nochmal genauer eingehen. Ich gehe dabei von einer vorhandenen Installation mit der Version 3.3.1 aus.

 
1. Admin-Account sinnvoll benennen

Der bei der Blog-Installation angelegte Admin-Account sollte nicht admin heißen! Ideal wäre ein Name, der nicht im direkten Zusammenhang mit der URL oder dem Thema des Seite steht. Der eigene Nickname sollte ebenfalls nicht genutzt werden. Hat man sich daran schon bei der Installation gehalten, kann man den folgenden Absatz überspringen, andernfalls weiterlesen.

Lege einen neuen Benutzer mit Admin-Rechten an, vergebe einen passenden Namen und nutze ein sicheres Passwort. Anschließend mit dem neuen Account einloggen und den alten Account löschen. Man wird gefragt, was mit den vorhandenen Inhalten des Benutzers passieren soll, hier wählt man die Übernahme auf den neuen Account.

Wähle im Profil auf jeden Fall aus, dass der angezeigte Name nicht der Benutzername ist.

Eine Sache fehlt aber noch: die ID des Accounts in der Datenbank hat nun noch immer die 1 oder, wenn es keine anderen Benutzer gibt, die 2. Das wissen auch potentielle Angreifer. Daher sollte man diese ID auf einen zufälligen Wert ändern. Dazu läd man sich entweder ein Plugin wie Search & Replace, öffnet phpMyAdmin oder greift sonst wie auf die Datenbank zu.

Es muss in 4 Tabellen je ein Wert geändert werden, und zwar in wp_users, wp_usermeta, wp_posts und wp_links. Im folgenden SQL-Statement nehme ich exemplarisch die ID 194, diese Zahl sollte aber jeder selbst festlegen. Die aktuelle ID muss selbstverständlich auch angepasst werden.

UPDATE wp_users    SET ID          = 194 WHERE ID          = 1;
UPDATE wp_usermeta SET user_id     = 194 WHERE user_id     = 1;
UPDATE wp_posts    SET post_author = 194 WHERE post_author = 1;
UPDATE wp_links    SET link_owner  = 194 WHERE link_owner  = 1;

 
2. Tabellen-Präfix != wp_

Was bei der Installation dem Benutzernamen das admin ist dem Tabellen-Präfix das wp_. Auch hier sollte man eine Änderung in Betracht ziehen. Je nachdem, wie viele Tabellen man noch in seiner Datenbank hat, kann es sinnvoll sein, das Präfix mit bestimmten Zeichen beginnen zu lassen, um die Position der WordPress-Tabellen bei der Sortierung zu beeinflussen.

In der Basisinstallation umfasst dies 11 Tabellen, die ich nachfolgend schon mal als fertiges SQL-Statement vorbereitet habe. Das Präfix wird für dieses Beispiel auf 19a7Z4_ gesetzt.

RENAME TABLE wp_commentmeta        TO 19a7Z4_commentmeta;
RENAME TABLE wp_comments           TO 19a7Z4_comments;
RENAME TABLE wp_links              TO 19a7Z4_links;
RENAME TABLE wp_options            TO 19a7Z4_options;
RENAME TABLE wp_postmeta           TO 19a7Z4_postmeta;
RENAME TABLE wp_posts              TO 19a7Z4_posts;
RENAME TABLE wp_terms              TO 19a7Z4_terms;
RENAME TABLE wp_term_relationships TO 19a7Z4_term_relationships;
RENAME TABLE wp_term_taxonomy      TO 19a7Z4_term_taxonomy;
RENAME TABLE wp_usermeta           TO 19a7Z4_usermeta;
RENAME TABLE wp_users              TO 19a7Z4_users;

Wenn man Plugins installiert hat, können es auch durchaus mehr Tabellen sein. Diese müssen dann ebenfalls umbenannt werden.

Damit allein ist es aber noch nicht getan, es sind noch weitere Schritte notwendig, damit WordPress weiterhin fehlerfrei seinen Dienst verrichtet. In der Tabelle 19a7Z4_options und evtl. auch in 19a7Z4_usermeta müssen noch Einträge abgeändert werden.

UPDATE 19a7Z4_options  SET option_name = REPLACE(option_name,'wp_','19a7Z4_');
UPDATE 19a7Z4_usermeta SET meta_key    = REPLACE(meta_key,   'wp_','19a7Z4_');

Zu guter letzt muss die Datei wp-config.php bearbeitet werden, damit WordPress das neue Tabellen-Präfix auch bekannt ist.

$table_prefix  = '19a7Z4_';

 
3. Verzeichnisschutz für wp-content und wp-includes

In diesen Verzeichnissen liegt nichts, worauf ein Besucher direkt zugreifen müsste, außer vielleicht den Uploads. Daher sollte man sie auch entsprechend absichern. In jedes Verzeichnis kommt eine .htaccess mit folgendem Inhalt:

Order Allow,Deny 
Deny from all 
<Files ~ ".(css|jpe?g|png|gif|js|svg)$"> 
  Allow from all 
</Files>

Grundsätzlich wird der Zugriff auf alle Dateien in diesen Verzeichnissen verboten, mit Ausnahme bestimmter Dateiendungen, die man individuell anpassen und ergänzen sollte.

 
4. Verzeichnisschutz für wp-admin oder nur wp-login.php ?

Diese Frage ist auf Playground sehr gut beantwortet und erläutert worden. In vielen Anleitungen wird dazu geraten, den kompletten Ordner wp-admin via .htaccess und .htpasswd zu schützen. Da WordPress aber auch außerhalb des Backends auf die Dateien in dem Verzeichnis zugreifen kann, wäre ein reibungsloser Betrieb für normale Besucher nicht gewährleistet. Daher wird nur die Datei wp-login.php zusätzlich geschützt.

# protect wp-login.php
<files wp-login.php>
  AuthType Basic
  AuthName "Admin-Bereich"
  AuthUserFile /absoluter-serverpfad/.htpasswd
  require valid-user
</files>

Ein doppelter Login also. Muss man aber nur machen, wenn man seinen für WordPress gewählten Benutzernamen und das Passwort für unzureichend hält… aber ob dann ein zusätzlicher Schutz mit ähnlich schwachen Daten die Situation großartig verbessert, darf angezweifelt werden.

Aus meiner Sicht nicht notwendig, für Sicherheitsfanatiker aber garantiert eine tolle Option 😉

 
5. Umgang mit fehlerhaften Login-Versuchen

Man kennt es von vielen Seiten, x-mal das Password falsch eingegeben, schon kann man sich erstmal Kaffee kochen gehen oder gleich den Support anrufen. WordPress bietet diesen Luxus von Haus aus nicht, aber er lässt sich leicht über Plugins nachrüsten. Limit Login Attempts oder Login LockDown sind zwei Vertreter dieser Plugin-Gattung, die Konfiguration sollte selbsterklärend sein.

 
6. Fehlerhinweise auf der Login-Seite ausblenden

Es ist immer wieder schön, wenn man die Zugangsdaten vergessen hat, und einem die Seite genau sagt, wo der Fehler liegt. So macht es auch WordPress und sagt einem genau, ob der Benutzername oder nur das Passwort falsch sind. Für einen selbst eine tolle Hilfe, aber leider auch für jeden anderen, der Zugang haben will.

Daher sollte man auch hier entweder mit Plugins wie WSD security arbeiten oder selbst die entsprechenden Änderungen im Quelltext vornehmen. Bei iNove zeigt das Plugin jedenfalls keine Wirkung, aber das kann durchaus am Theme liegen.

Man öffne also die Datei functions.php im iNove-Verzeichnis und kopiere folgende Zeile an den Anfang der Datei:

add_filter('login_errors',create_function('$a', "return null;"));

 
7. Versionsnummer nicht mehr ausgeben

WordPress gibt seine aktuelle Versionsnummer immer als meta-Tag aus. Eine wertvolle Information, weiß man so doch gleich, ob WordPress aktuell ist und welcher Exploit am ehesten Erfolg haben kann. Also weg mit der Information. Auch zu diesem Zweck gibt es wieder viele Plugins (erneut sei WSD security genannt) oder die Möglichkeit, händisch vorzugehen.

Man muss dafür im Theme-Verzeichnis entweder in der header.php oder der index.php die Zeile, in welcher der meta-Tag erzeugt wird, löschen.

<meta name="generator" content="WordPress <?php bloginfo('version'); ?>" />

Da die Version aber auch im RSS-Feed angegeben wird, und einige Funktionen und Plugins diese Information auch benötigen, kann man die Versionsnummer leider nicht ganz löschen. Das Ausblenden via Plugin scheint daher am flexibelsten.

Zudem sollte man noch den Zugriff auf zwei Dateien unterbinden, in denen die Versionsnummer ebenfalls nachzulesen ist: liesmich.html und readme.html. Einige Seiten empfehlen deren Löschung, was man dann aber nach jedem Update wiederholen darf. Als eine langfristige Lösung scheint mir hier der Einsatz von .htaccess hilfreich zu sein.

# protect liesmich.html
<files liesmich.html>
  Order deny,allow
  deny from all
</files>

# protect readme.html
<files readme.html>
  Order deny,allow
  deny from all
</files>

 
Fazit

Mit ein paar relativ einfachen Aktionen kann man die Sicherheit von WordPress ein gutes Stück erhöhen, auch wenn es zugleich etwa schade ist, dass man als normaler Nutzer überhaupt an sowas denken muss, denn einige Dinge könnten bereits voreingestellt ausgeliefert werden.

Aber so hat man zumindest immer mal wieder etwas neues, um sich zu beschäftigen ^^

WordPress – Google Maps

2. März 2012 Keine Kommentare

Für den vergangenen Sommerurlaub hatte ich eine Datenbank erstellt, in der alle potentiellen Reiseziele eingetragen werden konnten. Das Ergebnis konnte man sich in Google Maps anzeigen lassen, mit einigen einfachen Filter-Funktionen und eigenen Icons für die verschiedenen Kategorien (Schwimmbad, Höhle, etc.).

Das war zum einen ganz interessant, da ich mich so mal mit der Google Maps JavaScript API beschäftigen konnte, zum anderen aber auch überaus hilfreich bei der Planung einer groben Route durch Süddeutschland, die sich quasi automatisch aus der Verteilung der POIs ergab.

Für die Einbindung im Blog gibt es nun verschiedene Möglichkeiten. Für welche man sich entscheidet, hängt von den Anforderungen ab, die man an die Karte stellt, sowie von den eigenen Programmierkenntnissen.

 
1. HTML-Code zum Einbetten in eine Webseite

Die wohl einfachste Lösung bietet Google selbst an. Man besucht einfach die Google Maps Webseite, gibt den Ort oder die Route ein, die man angezeigt haben möchte, und klickt dann neben dem Drucker-Symbol auf Link.

maps

Entweder kopiert man sich nun gleich den Code zum Einbetten, oder klickt auf den Link zum Anpassen, wo man noch die Kartengröße und, sofern man sich mit den Parametern auskennt, noch weitere Anpassungen vornehmen kann.

 
2. WordPress Plugins

Die zweite Möglichkeit, Karten schnell und unkompliziert einzubinden, stellen Plugins dar. Diese bieten unterschiedliche Funktionen, man muss also ein wenig schauen, welches der Plugins für einen in Frage kommt.

Für mich war wichtig, dass die Maps API v3 genutzt wird und man die Marker auch abseits vom vorgegebenen Straßennetz platzieren kann. Diese Anforderungen wurden von MapPress Easy Google Maps erfüllt. Außerdem ist es bei diesem Plugin möglich, mehr als einen Marker zu setzen, den Zoom-Level und die Kameraposition zu speichern sowie sich die Route von einem selbst definierbaren Startpunkt zu einem der Marker berechnen zu lassen. Allerdings kann das Plugin keine vorgegebenen Routen anzeigen.

 
3. Einbettung über benutzerdefinierte Felder ohne iframe

Ich habe bereits über die benutzerdefinierten Felder geschrieben und werde irgendwann mal testen, ob die Einbindung von Karten auch auf diesem Wege funktioniert.

Theoretisch benötigt man zusätzlich zu den Modifikationen zum Einfügen von eigenen Scripten auch noch eine Modifikation, um ein onload-Event im <body> platzieren zu können. Dadurch ergibt sich aber auch schon eine Einschränkung: Diese Variante kann nur auf Seiten genutzt werden, aber nicht in Artikeln…außer man schafft es, die Kartendarstellung in der Artikel-Übersicht zu unterbinden.

Außerdem wäre es wichtig, in den benutzerdefinierten Feldern ausführbaren PHP-Code einfügen zu können, da diese Variante ansonsten nicht sinnvoll genutzt werden könnte.

Speed up my Firefox

10. Februar 2012 Keine Kommentare

Und wieder zeigt sich, wie leicht ich von einem Thema ins nächste rutsche. Wie gestern schon angekündigt wollte ich mich mit der Synchronisation von Addons befassen, aber meine sprunghafte Natur hat sich natürlich gleich von etwas neuem ablenken lassen.

In der Firma benutze ich wie die meisten den Firefox Portable, und das schon relativ lange. Als ich heute schauen wollte, wie groß die Addons denn so sind, um den benötigten Speicherplatz schon mal einschätzen zu können, viel mir fast alles aus dem Gesicht: großzügige 280 MB umfasste mein Profilverzeichnis, die reinen Addons beanspruchen davon aber nicht mal 20 MB für sich. Der Großteil entfällt auf die von Firefox und einigen Addons angelegten SQLite Datenbanken.

 
Die größten Speicherfresser

Spitzenreiter der Verschwendung war/ist das Addon Brief, welches scheinbar nie seine DB aufräumt, selbst wenn im GUI was anderes behauptet wird, und somit auf stolze 130 MB kam. Da geht zwar noch einiges mehr, aber dafür hab ich Brief wohl noch nicht lange genug installiert. Nett war auch das 60 MB große Backup-File, das Brief noch angelegt hatte.

Platz 2 geht an die Datei urlclassifier3.sqlite und gehört direkt zu Firefox. Diese empfand ich mit ~50 MB auch als etwas zu groß, insbesondere für eine Anwendung, die als Portable betittelt wird und somit wohl häufig auf USB-Sticks eingesetzt wird. Wenn immer so große Brocken beim Start oder bei Eingaben geladen und durchsucht werden müssen, ist es ja kein Wunder, dass der Fuchs etws langsam wirkt.

Auch die Datei places.sqlite kommt ohne Probleme schon auf gute 10 MB, selbst wenn darin nur die offenen Tabs und Lesezeichen gespeichert werden. Aktiviert man dann auch noch die Chronik, kommt man schnell auf 20-30 MB oder noch mehr.

Alles zusammen also schon eine nicht ganz unerhebliche Datenmenge, die bei jedem Start verarbeitet wird.

 
Erster Schritt, Aufräumen und somit Komprimieren der Datenbanken

Auf Caschys Blog gibt es einen guten Artikel, wie man diese Aufgabe bewältigen kann. Angesprochen werden verschiedene Möglichkeiten, die für mich interessanteste und auch flexibelste Lösung ist über die Kommandozeile.

Man benötigt unter Windows das Programm sqlite3.exe. Das Archiv enthält nur eine Datei, die man direkt in den Profilordner von Firefox (oder auch Thunderbird) entpackt. Mit diesem Programm ist es möglich, die überflüssigen Leerzeilen, die sich im Laufe der Zeit in Datenbanken ansammeln, zu entfernen, was zu enormen Platzeinsparungen führen kann.

Jetzt braucht es nur noch eine kleine Batch-Datei (ebenfalls im Profilordner), um den Vorgang zu starten. Der Name der Datei ist dabei egal, nur die Endung muss .bat lauten.

@echo off
echo.
echo VACUUM SQLite Files
echo ----------------------------------------
for %%i in (*.sqlite) do sqlite3.exe %%i "VACUUM" & echo VACUUM %%i
echo done

Wichtig: Firefox darf nicht geöffnet sein, wenn die Komprimierung ausgeführt wird!

Dieser Vorgang kann, je nach Größe der vorhandenen SQLite Dateien, mehrere Minuten dauern. Anschließend sollte sich aber schon ein Unterschied in der Ladegeschwindigkeit von Firefox bemerkbar machen.

 
Existenzberechtigung der Addons prüfen

Dass Addons den Startvorgang von Firefox verlangsamen, ist inzwischen allgemein bekannt. Einige machen sich kaum bemerkbar, andere Addons können mehrere Sekunden ausmachen.

Im Falle Brief muss man sich die Frage stellen, wie oft man die Funktionen des Addons nutzt. Hat man Lesezeichen? Archiviert man alles, um später nochmal drauf zugreifen zu können? Oder nutzt man es nur, um die neusten Infos auf Webseiten nicht zu verpassen?

Wenn man den letzten Punkt mit Ja beantworten kann, wäre das einfachste, vor der Komprimierung der Datenbanken die von Brief einfach zu löschen. Man spart Platz und Brief reagiert schneller. Den Befehl zum löschen kann man mit in der Batch-Datei unterbringen.

@echo off
del brief.sqlite
echo.
echo VACUUM SQLite Files
echo ----------------------------------------
for %%i in (*.sqlite) do sqlite3.exe %%i "VACUUM" & echo VACUUM %%i
echo done

Bei anderen Addons muss man schauen, ob man diese überhaupt dringend benötigt. Falls nein, Addon deaktivieren oder gleich ganz löschen. FoxyProxy ist so ein Kandidat, zumindest kommt es mir so vor, als wenn FF deutlich schneller ist, wenn man das Addon deaktiviert. Allerdings brauche ich es, daher werde ich mich damit wohl abfinden müssen ^^

 
urlclassifier3.sqlite

Eine grundsätzliche Frage muss hier erst beantwortet werden: wie wichtig ist mir „Sicherheit“?

Viele haben sie schon mal gesehen, die Warnung, dass eine Seite als unsicher oder attackierend eingestuft wurde. Google führt eine Datenbank, in der alle als bedenklich eingestuften Webseiten aufgelistet werden. In regelmäßigen Abständen erwischt dies auch bekannte Seiten, weil ein Teil ihres Quellcodes plötzlich durch die Heuristik-Prüfung fällt oder aber ein Werbeanbieter gehackt wurde und die Werbung so plötzlich echten Schadcode enthält. Das Problem ist dann nach meist wenigen Minuten behoben, der Eintrag bei Google aber nur sehr aufwendig zu entfernen.

Die Datei urlclassifier3.sqlite stellt ein lokales Abbild dieser Datenbank von Google dar. Zumindest in Auszügen. Jede eingegebene Adresse wird erst mit dieser Datenbank abgeglichen, bevor sie aufgerufen wird. Das wiederum kostet Zeit und lässt den Firefox langsamer werden.

Die Datei nur zu löschen, bringt nicht den gewünschten Erfolg. Man muss auch dafür sorgen, dass sie nicht gleich wieder neu von Google befüllt wird. Dazu geht man in die Einstellungen von Firefox:

Extras -> Einstellungen -> Sicherheit

und entfernt die Häckchen bei allen Punkten, die mit Webseiten blockieren, wenn… beginnen.

Nach dem nächsten Start von Firefox wird diese Datei zwar neu angelegt, aber sie wird nicht mehr größer und bei Seitenaufrufen auch nicht mehr durchsucht.

 
Fazit

Vorher fast 300 MB, jetzt nur noch knapp über 30 MB im Profilordner und ein Firefox, der sich spürbar schneller verhält 🙂

WordPress personalisieren

9. Februar 2012 Keine Kommentare

Das Blog installieren und sich bei Bedarf noch ein fertiges Theme im Internet suchen, schon ist der Großteil der Benutzer zufrieden. Allerdings gehöre ich nicht zu dieser Gruppe. Da Design nicht grade eine meiner Stärken ist, werde ich zwar darauf verzichten, irgendwann ein eigenes Theme zu erstellen, und mich auf fertige Vorlagen stützen, aber dennoch muss dieser Blog ein wenig personalisiert werden. Einiges ist halt aus meiner Sicht nicht ganz optimal in der Standardkonfiguration.

 
Das richtige Design

Ich bin ein Freund von relativ einfachen Designs, zu viel Informationen auf engem Raum und agressive Farben überlasse ich gerne anderen.

Zwei Themes kamen bei der Suche in die engere Auswahl: zBench und iNove. zBench war mein ursprünglicher Favourit, da es wie ich finde einen etwas harmonischeren Eindruck macht. Allerdings störte mich das vollständige Fehlen eines typischen Headers dann doch so sehr, dass meine Wahl letztlich auf iNove viel. Zwar hat das Theme mit der Darstellung von CSS Dropdown-Menüs Probleme, aber das wird ja vielleicht noch in einer der späteren Versionen behoben. Außerdem brauche ich diese Funktion vorerst eh nicht.

 
Login im Header

Die erste wichtige Anpassung betrifft das An- und Abmelden am System. In der Standard-Seitenleiste rutscht dieser Punkt im Laufe der Jahre bei aktiver Blog-Nutzung immer weiter nach unten und ein extra Lesezeichen dafür halte ich für Verschwendung, also muss daran was geändert werden. Da mir die Seitenleiste aber derzeit so wie sie ist ganz gut gefällt, muss eine andere Lösung her.

Der Header. Man kennt es von vielen Seiten, oben rechts stehen die immer gleichen Links. Ob das auch bei WordPress geht? Klar, und zwar sehr einfach über den Admin-Bereich:

Design -> Aktuelle Themen Optionen -> Banner

In dem Eingabefeld kann man den Inhalt des Headers einfügen und mit HTML und CSS formatieren. Allerdings ist es damit noch nicht getan, denn selbst mit Plugins kann man in dem Feld keinen PHP-Code platzieren, was aber unverzichtbar ist, wenn man einen dynamischen Link zum An- und Abmelden haben möchte. Über das Feld kann man nur statische Links vorgeben.

Also muss man direkt in der entsprechenden Datei Änderungen vornehmen. Zu finden ist diese beim iNove-Theme in folgendem Verzeichnis:

/wp-content/themes/inove/templates/header.php

Hier fügt man nun an der markierten Stelle den zusätzlichen Code ein:

<!-- header START -->
<div id="header">

	<!-- banner START -->
	<?php if( $options['banner_content'] && (
		($options['banner_registered'] && $user_ID) || 
		($options['banner_commentator'] && !$user_ID && isset($_COOKIE['comment_author_'.COOKIEHASH])) || 
		($options['banner_visitor'] && !$user_ID && !isset($_COOKIE['comment_author_'.COOKIEHASH]))
	) ) : ?>
		<div class="banner">
			<?php wp_loginout(); ?> 
			<?php echo($options['banner_content']); ?>
		</div>
	<?php endif; ?>
	<!-- banner END -->

Diese Zeile bewirkt, dass oben rechts im Header ab sofort immer der An- oder Abmelden Link angezeigt wird, allerdings nur, wenn im Admin-Bereich auch der Haken zum Banner anzeigen gesetzt ist. Alle Eingaben in dem Textfeld des Banners werden nun hinter dem An- / Abmelden-Link angezeigt.

Möchte man jetzt abschließend noch die Link-Farbe ändern, ohne dass die Änderung gleich im ganzen Blog gültig wird, muss der Code nochmals leicht angepasst werden:

<?php echo str_replace('">','" style="color:#CCCCCC">',wp_loginout(false,false)); ?> 

Das ist die schlichteste Variante, natürlich kann man ebenso eine neue ID vergeben und die CSS Datei des Themes anpassen. Wäre sauberer, mir aber grad etwas zu viel unnötiger Arbeit.

 
Mehr Funktionen durch Plugins

SyntaxHighlighter Evolved
Sehr hilfreich, wenn man in den Beiträgen Code veröffentlichen und Syntax-Highlighting zur besseren Lesbarkeit einsetzen möchte.

Exclude Pages from Navigation
Seiten werden, wenn es das Theme unterstützt (im Falle iNove horizontal neben dem Home-Button) automatisch aufgelistet und verlinkt. Wenn man aber nicht jede erstellte Seite dort stehen haben möchte, ist dieses Plugin sehr hilfreich. Beim Erstellen einer Seite kann man nach der Installation festlegen, ob diese Seite aufgelistet werden soll oder nicht.

Contact Form 7
Da die Rechtsprechung bezüglich Webseiten inzwischen kaum noch durchschaubar ist (ab wann ist eine private Seite nicht mehr als privat anzusehen? Braucht man ein Impressum?) und keiner diese Fragen zu beantworten vermag, sollte man sich überlegen, ob man nicht lieber auf Nummer Sicher geht und seine Seite um ein kleines Impressum und ein Kontaktformular ergänzt. Kostet auf jeden Fall weniger als eine mögliche Abmahnung eines dieser parasitären Geschwüre der Gesellschaft.

Allow PHP in posts and pages
Eigener Code innerhlab eines Artikels oder einer Seite, die mit WordPress erstellt wurde. Kein Problem, mit diesem Plugin ist es möglich. Bei Interesse kann man so den Inhalt seiner Artikel dynamisch generieren, eigene Datenbanken einbinden, etc.

Akismet
Wird von WordPress mitgeliefert, und das aus gutem Grund. Wer keine Lust auf Spam hat, sollte sich das Plugin mal näher ansehen.