Page 37 of 59

Windows Restriktion: Strg + L is evil

Besonders Firmen haben das Problem zwischen Vertrauen und Sicherheit. Wie weit kann man dem Mitarbeiter vertrauen ohne dabei die Sicherheit des Unternehmens auf Spiel zu setzen. Besonders in Windows ist dies ein großes Problem, da es auch ohne böswillige Absicht des Mitarbeiters passieren kann, das der Rechner kompromittiert wird.

Am Wochenende wollte ich einem Bekannten helfen sein Notebook mit WLAN zu versorgen und drückte dabei im IE Strg+L . Diese Kombination öffnet normalerweise ein Fenster in welches man eine URL eintragen kann. Hier bekam ich jedoch die Meldung das ich nicht die Rechte hätte. Dabei ist das die gleiche Funktionalität, wie oben in die Adressleiste zu klicken.

Der Vorteil ist lediglich, das man nicht erst mit dem Touchpad oder dem Trackball zu der Leiste surfen muß, da diese beim Starten keinen Focus hat. Aber auch wenn der Browser schon gestartet ist, läßt sich so natürlich wesentlich schneller zu einer neuen URL springen.

Im Firefox funktioniert diese Kombination natürlich auch, jedoch öffnet sich hier kein neues Fenster, sondern der Browser springt direkt in die Adressezeile und man kann eine neue URL eintragen. Aufgrund der Gewohnheit bekam ich die Fehlermeldung natürlich mehrmals zu sehen, was mich umso mehr aufregte.

WordPress 2.6.5 is available! Please update now.

Gestern Nachmittag hatte ich bei Securityfocus erst die Anzahl von Vulnerabilities zwischen Typo3 und WordPress verglichen. Typo3 kam auf zwei Seite, WordPress auf drei. Wobei viele Meldungen auf Typo3 Extensions entfallen. WordPress hat diesen Bonus nicht.

Bevor ich jetzt jedoch die ganze Update Prozedur starte, habe ich mir die Unterschiede zwischen WordPress 2.6.3 und WordPress 2.6.5 angeschaut. Die WordPress Version 2.6.4 wurde übersprungen, da es wohl eine Fake Version gab.

Das Update würde insgesamt nur 5 Dateien betreffen. Dafür den Aufwand treiben, die Datenbank zu sichern, alles löschen, das ganze WordPress Paket einspielen, ist mir zu aufwendig. Ich werde es händisch machen und mir dabei gleich mal die Fehler anschauen.

In einer Datei wird bloß die Versionsnummer hochgezählt. Manche Blogs behaupten, das Technorati Blogs aus dem Index schmeißt, die eine ältere WordPressversion verwenden, wie alt diese jedoch sein muß konnte ich bisher nicht herausfinden. Prinzipiell ist dies jedoch für mich ein Schwachstelle, wenn man “von außen” herausfinden kann, auf welcher Version ein System läuft. Dadurch wird es dem Angreifer umso leichter gemacht, den richtigen Hebel auszuwählen um anzusetzen.

Schauen wir uns einen weiteren Fehler an. Dies soll keine Klugscheißerei werden, denn die kann keiner leiden, aber nur aus Fehlern lernt man.

[php]
// File: /wp-admin/users.php

129 129 $go_delete = false;
130 130 foreach ( (array) $userids as $id ) {
131 $id = (int) $id;
131 132 $user = new WP_User($id);
132 133 if ( $id == $current_user->ID ) {
[/php]

Zeile 5 bzw. 131 ist neu. Bevor die Variable $id an WP_User übergeben wird, wird sie nach int gecasted. Dies ist auch sinnvoll, denn ursprünglich kommt das Array direkt aus einem Formular und nicht etwa aus der Datenbank.
Was mir jedoch nicht ganz schlüssig ist, warum wird der Cast nicht direkt in der Methode gemacht? Die Methode wird bestimmt noch an mehreren Stellen aufgerufen und man sollte der Methode die Verantwortung übertragen, sicherzustellen, das nur die richtigen Werte übertragen werden.

Betrachten wir noch eine weitere Lücke, die verdeutlichen soll, warum PHP Anwendungen so anfällig sind. In Programmiersprachen wie Java oder JavaScript wäre der Fehler schon von Anfang an aufgefallen.
Sehen wir uns zuerst den alten Code an:
[php]
// File: /wp-includes/feed.php

498 echo ‘http’
499 . ( $_SERVER[‘https’] == ‘on’ ? ‘s’ : ” ) . ‘://’
500 . $_SERVER[‘HTTP_HOST’]
501 . wp_specialchars(stripslashes($_SERVER[‘REQUEST_URI’]), 1);
[/php]

Und nun die Neue:

[php]
// File: /wp-includes/feed.php

498 $host = @parse_url(get_option(‘home’));
499 $host = $host[‘host’];
500 echo clean_url(
501 ‘http’
502 . ( (isset($_SERVER[‘https’]) && $_SERVER[‘https’] == ‘on’) ? ‘s’ : ” ) . ‘://’
503 . $host
504 . stripslashes($_SERVER[‘REQUEST_URI’])
505 );
[/php]

Bevor jetzt also geprüft ob der $_SERVER[‘https’] == ‘on’ wird erstmal überprüft ob die Variable ob überhaupt gesetzt ist. Wenn die Variable nicht gesetzt ist, macht es auch keinen Sinn zu überprüfen ob sie on ist. Sollte die erste Bedingung bereits fehlschlagen wird sofort abgebrochen. Dafür sorgt das &&.

PHP Stylesheet CSS

Wie bereits in den 5 Tipps für eine schnellere Webseite beschrieben sollte man soviel Code wie möglich in die CSS Datei auslagern. CSS Dateien haben, genauso wie HTML nur einen Nachteil, man kann keine Logik implementieren. In PHP ist dies jedoch möglich. Außerdem kann PHP so tun als sei es CSS.

[php]

[/php]

In HTML wird es wie eine CSS Datei eingebunden.

[html] [/html]

Manche Kunden möchten gerne das jede Kategorie eine andere Farbe hat. Bevor man jetzt anfängt 10 verschiedene Stylesheet Dateien anzulegen, wäre es einfacher jedes Design in ein anderen Ordner zu legen und diesen per GET zu übergeben.

[html] [/html]

Um das Stylesheet übersichtlich zu gestalten, sollte man wirklich nur den Dynamischen Teil in eine PHP CSS Datei auslagern. Die untere CSS Datei würde wie folgt aussehen:

[css]

/* NUR FUER FARBEN UND HINTERGRUENDE */
/* DER REST ALLES IN STYLESHEET.CSS */

/* KOPF */

#kopf {
background-image:url(kopf/header_start.jpg);
background-repeat:no-repeat;
height: 220px;
}
[/css]

In der Codevorschau ist dieses Beispiel sehr bunt. Wer jedoch solche Dateien mit VI bzw. VIM erstellt, wird jedoch enttäuscht werden, weil der Editor das Syntaxhighliting aufgrund der Dateiendung entscheidet. Dies kann man jedoch manuell auf CSS umschalten. Danach ist der PHP Code zwar schwarz, aber die Datei sollte auch hauptsächlich aus CSS bestehen.

Wer in seinem VIM-Menü verzweifelt nach CSS sucht, wird unter Cascading Style Sheets fündig.

Meinung – Fazit zu 1blu

Während der langen Blogpause bin ich mindestens zweimal umgezogen. Beim durchforsten des Blogs ist mir aufgefallen wie euphorisch ich damals noch über 1blu schrieb. Heute würde ich dies nicht mehr sagen. Das Sprichwort “Wer billig kauft, kauft zweimal” hat sich mal wieder bewahrheitet.

Folgende Punkte haben mich zum Umzug bewogen:
– Samstag / Sonntag war der Server und die Verbindung extrem langsam
– Der Support hat auf E-Mails nicht geantwortet
– Die Bedienung von Plesk und Virtuozzo war sehr verwirrend
– Plesk hatte ein Eigenleben*

Nach einem kleinen Umweg über netclusive bin ich schließlich bei Hetzner gelandet, auf einem Root Server. Diesen einzurichten und zu konfigurieren, erfordert jedoch ein fundiertes Linux-Wissen und Erfahrung mit Servern die im Internet stehen.

Im Gegensatz zu 1blu läuft auf dem Hetznerserver kein Mailserver. Für eingetragene Domains und Mailadressen werden Mails angenommen und weitergeleitet oder abgelehnt. Es gibt jedoch keine Mailbox auf dem System. Die Aussortierung von Spam erfordert einfach zu viele Ressourcen und die Speicherung von Mails ist ein Faß ohne Boden, bei Bekannten, die immer nur 1 MB mehr haben wollen.

* Das Eigenleben äußerte sich darin, das sich Dienste nicht abschalten ließen oder abgeschaltete Dienste weiterhin Mails schickten.

Spamschutz: Mathetest

Nachdem mittlerweile die schlechten Captchas geknackt wurden, hat man sich neue Spamschutzmechanismen einfallen gelassen. Dazu zählen unter anderem Hunde in Katzenbilder oder umgekehrt erkennen bzw. eingescannten Text abtippen, um so zu helfen Bücher zu digitalisieren.

Captchas, Hunde, Katzen und eingescannter Text hat ein Nachteil: es sind immer Bilder. Dies wurde am Anfang als der Vorteil gefeiert, weil nur Menschen Bilder lesen und verstehen können. Mittlerweile ist man schlauer und Captchas die ihren Text nicht bis zur Unkenntlichkeit verschleiern, können mittels OCR automatisiert ausgelesen werden. Außerdem sind Bilder ein großer Nachteil für Braille Browser.

Zahlen die direkt im Quellcode stehen können von Braille Browsern natürlich wesentlich verständlicher interpretiert werden, aber dies sollten die Spamrobots doch auch können. Als vermute ich mal wird Anfangs das Spamaufkommen, aufgrund der Neuheit, sicherlich nachlassen, aber im Endeffekt verpufft diese Maßnahme und nach kurzer Zeit hat man wieder ein Spamaufkommen wie zuvor.

Bevor ich meinen WordPress Blog auf Akismet umstellte, hatte ich auch massive Probleme mit Spam. Dies konnte ich kurzfristig durch den Einsatzes eines Plugins senken, welches bei zuvielen Links ein erneutes Absenden forderte, jedoch verpuffte diese Wirkung bald.