Category: Bugs | Vulnerabilities

Spät gebloggt: das Antifeature

Über meinen Feedreader bin ich auf einen interessanten Artikel in der “Zeit” aufmerksam geworden (http://www.zeit.de/zeit-wissen/2011/04/Antifeatures) welcher von sog. Antifeatures handelt. Ein sicherlich klassisches Beispiel dafür ist die Simlock-Sperre bei Handys. Hier wurde extra eine Funktion entwickelt, welche es dem Konsumenten erschwert die SIM-Karte nach Belieben auszusuchen, obwohl es von der Bauart keine Unterschiede gibt.

Zum besseren Verständnis vergleicht der Artikel die Situation mit einem Autohändler, der Autos mit angezogener Handbremse verkauft und sie erst gegen Aufpreis löst. Das Beispiel halte ich insofern für problematisch als das die Grenze zwischen Antifeature und Tuning sehr dünn wenn nicht sogar schwammig ist.

Der Artikel beschränkt sich ausschließlich auf die Software-Branche, was sicherlich dem Wort “Antifeature” geschuldet ist, vergleicht dabei das Vorgehen immer wieder mit Mafia-Methoden. Einen Wikipedia Eintrag gibt es bisher noch nicht zu Antifeatures. Es gibt noch einen längeren Eintrag auf netzpolitik.org (http://netzpolitik.org/2011/dradio-wissen-antifeatures-funktionen-die-wir-nicht-wollen/).

Meiner Ansicht nach sind Antifeatures keine Erfindung der Software-Industrie, hier ist es vielleicht nur besonders deutlich bzw. aufgrund der immer wiederkehrenden Unterscheidung von Bugs und Features sehr anschaulich. Zigaretten enthalten z.B. über 600 verschiedene Zusatzstoffe (http://www.netdoktor.de/Gesund-Leben/Rauchen/Krank-durch-Rauchen/Tabakwaren-Was-drin-steckt-9369.html) die vor allem die Abhängigkeit fördern und den Geschmack verbessern. Den Geschmack verbessern ist sicherlich im Sinne des Rauchers, die Abhängigkeit fördern würde auch unter die Definition Antifeature fallen, weil es sicherlich eine Funktionalität ist die der Konsument nicht will.

Genauso könnte man die elektronische Abriegelung von Fahrzeugen bei 250 km/h als Antifeature bezeichnen, allerdings dient es in diesem Fall der Sicherheit, genauso wie möglicherweise die elektronische Blockade von fremden Akkus in Handys.

Ich persönlich finde die Diskussion etwas naiv, weil Antifeatures keine neue Erfindung sind. Es scheint jetzt einfach nur greifbarer zu sein, weil es zudem Firmen gibt, die Chips entwickeln welche mit Absicht fremde Akkus schneller entladen, um somit einen Qualitätsmangel vorzutäuschen. Genauso gibt es aber auch schon immer Ingenieur-Büros die damit beschäftigt sind ein Bauteil so zu entwickeln das es vom Materialaufwand nach Möglichkeit gerade so die 24 Monate bzw. zwei Jahre Gewährleistung übersteht und idealerweise im 25 Monat kaputt geht. Das Problem mit der langen Haltbarkeit und den vielen Funktionen ist einfach das sie nicht zum Konsum beitragen. Ohne Konsum gäbe es aber keine Wirtschaft, Arbeitsplätze, etc.

Von der anderen Seite betrachtet kostet die Unternehmen die Entwicklung eines Antifeatures Geld. Die Notwendigkeit eines Antifeatures kann sich somit auf zwei Dinge begründen, zum Einen die mangelnde detaillierte Vergleichsmöglichkeit bzw. Motivation des Verbrauchers zwischen zwei Angeboten, der letztendlich einfach nach dem Preis entscheidet und hofft das der Name hält was er verspricht und zum Anderen die geringe Wertschätzung des Produktes. Jeder der ein Antifeature bemängelt muss sich im selbem Atemzug fragen ob er das Produkt gekauft hätte, wenn der Betrag gleich entsprechend höher um die Kosten für die Beseitigung des Antifeatures gewesen wäre.

Weitere Bots aus Botnang???

Für alle die den Witz in der URL nicht verstehen, weil es eben kein TCP Witz, der bekanntlich immer ankommt, hier eine kurze Erklärung: in Stuttgart gibt es wirklich ein Stadtteil der Botnang heißt, jedoch eher wie Bootnang ausgesprochen wird. Jetzt aber zurück zum Thema. Wie bereit in Bots, Bots, Bots geschildert, bekomme ich von einer noch im Entwicklungsmodus befindlichen Seiten immer eMails zugeschickt, sobald irgendwo ein Fehler auftritt.

Die URL der Seite wird immer bekannter, wodurch auch immer mehr Bots auf die Seite kommen und sie offensichtlich versuchen, wie nachfolgende Code-Fragmente beweisen, automatisiert zu hacken:

[PHP]
‘HTTP_USER_AGENT’ => ‘libwww-perl/5.803’,

Fehler-URL: http://www.example.com/microblog/function.require/?option=com_microblog&controller=../../../../../../../../../../../../../../../proc/self/environ%00

Fehler-URL: http://www.example.com/microblog/?option=com_microblog&controller=../../../../../../../../../../../../../../../proc/self/environ%00
[/PHP]

oder auch

[PHP]
‘HTTP_USER_AGENT’ => ‘Mozilla/5.0 (Windows; U; Windows NT 5.1; pl-PL; rv:1.8.1.24pre) Gecko/20100228 K-Meleon/1.5.4’,

Fehler-URL: http://www.example.com//////index.php?option=com_myblog&Itemid=12&task=../../../../../../../../../../../../../../../../../../../../../../../..//proc/self/environ%0000
[/PHP]

Der Bot vermutet / hofft das sich hinter der Seite eine Joomla Installation befindet, da “com_myblog” ein Teil vom Joomla Content Manager ist.

Error 404, 500, etc. automatisch finden

Gerade bei größeren Webseiten, mit unterschiedlichen Plugins und Erweiterung, kann es vorkommen das einzelne Seiten nicht aufrufbar sind. Die Gründe dafür sind noch vielfälter als die zur Verfügung stehenden Status-Codes. In den Google Webmaster Sitemap Tools befindet sich unter der Kategorie Crawling Fehler folgende Einteilung:

  • Nicht gefunden
  • Nicht aufgerufene URLs
  • URLs durch “robots.txt” eingeschränkt
  • Zeitüberschreitung beim Aufrufen von URLs.
  • HTTP-Fehler
  • Nicht erreichbare URLs
  • Soft- 404-Fehler

Zu beachten ist dabei, das Google nicht nur die Verlinkung innerhalb der Seite überprüft, sondern auch Links von extern, welche Möglicherweise auf nicht mehr gültige URLs zeigen. Dafür eignet sich die anschließend vorgestellte Analyse Methode nicht. Im folgenden geht es ausschließlich um Links welche Innerhalb der Seite keinen 200 Code, OK bzw. Erfolgreich, zurückgeben.

Sehr anschaulich ist die Firefox Erweiterung LinkChecker, welche unter https://addons.mozilla.org/de/firefox/addon/linkchecker/ heruntergeladen werden kann.

Link Checker Ergebnis

Link Checker Ergebnis

Diese stellt in Ampelfarben, welche auch entsprechend konfiguriert werden können, die Erreichbarkeit von Links auf der jeweiligen Seite dar. In der Statusleiste gibt es zudem eine Anzeige, welche die Gesamtanzahl der Links, sowie die Anzahl der geprüften und den Fortschritt anzeigt:

Linker Checker Progress Bar

Linker Checker Progress Bar

Für größere Webseiten, welche über viele verschiedene Seiten und Kategorie verfügen, ist die händische Überprüfung mittels Firefox Plugin sicherlich nicht praktikabel. Dafür eignet sich wget. wGet ist ein kleines Kommandozeilen Tool, welches vielfältig einsetzbar ist. Für unseren Anwendungsfall benötigen wir die Spider Funktionalität:

[html]
wget -r –spider -o log.txt http://www.bugblog.de
[/html]

Wget verfolgt (-r rekursiv) alle Links innerhalb der selben Domain und läd die Dateien zum finden weiterer Links temporär (–spider) herunter. Das Ergebnis beim Aufrufen der Dateien (-o output) wird in der log.txt Datei gespeichert. Diese kann später nach den oben beschriebenen Statuscodes durchsucht werden.

Eine ausführliche Auflistung, aller möglichen Status Codes befindet sich unter: http://www.google.com/support/webmasters/bin/answer.py?answer=40132

Typo3 X UA Compatible Meta

Mit der Veröffentlichung vom Internet Explorer 9 und der automatischen Installation auf Windows 7 Systemen, stellt man womöglich fest, das die eigene Homepage anders aussieht bzw. JavaScript nicht mehr wie gewünscht funktioniert. Je nach Größe der Seite und Umfang des anzupassenden Codes, besteht die Notwendigkeit einer Übergangslösung, bis der Code entsprechend angepasst wurde.

Dafür bietet sich u.a. die Meta Definition “X-UA-Compatible” an, welche den Internet Explorer vorschreibt, wie er die Seite zu interpretieren hat. Diese Kompatibilitätseinstellung muss direkt nach dem head-Tag erfolgen, höchstens der title-Tag darf noch dazwischen stehen. In Typo3 wird der Head meist vollautomatisch erzeugt. Das Hinzufügen von headerData wird also nicht den erwünschten Erfolg bringen:

[php]
# TypoScript Code
page.headerData.1 = TEXT
page.headerData.1.value =
[/php]

Steht zumeist unter der Einbindung von Stylesheet Angaben und JavaScript Bibliotheken. Abhilfe schafft die direkte Modifzierung des head-Tags:

[php]
# TypoScript Code
page.headTag =
[/php]

Einer Übersicht aller möglichen Codes findet ihr im Microsoft eigenen “Internet Explorer Compatibility Center” unter http://msdn.microsoft.com/de-de/ie/cc405106.

[random_content group_id=”211″ num_posts=”1″]

Oxid Update

Wer bei Google nach “Oxid Update” sucht bekommt beim ersten Treffer, auf der offiziellen Oxid-Homepage, folgende netten Hinweis zu sehen:

Wie installiere ich Updates?
Zu jedem Update gehört eine install.html. In dieser Datei wird die komplette Update-Prozedur beschrieben.
Quelle: http://www.oxid-esales.com/de/resources/help-faq/faq/wie-installiere-ich-updates

Das ist totaler Quatsch !!! Weder im Oxid Package noch im Update Package befindet sich eine install.html. Von daher ist es auch keine Wunder, das die Seite mit einem Stern gerated ist. Für ein Oxid Update könnt ihr ein Cumulatives Package herunterladen, welches ihr hier findet: http://wiki.oxidforge.org/Cumulative_Packages

Darin befindet sich eine README Datei, welche euch wiederum auf folgende Seite verweist: http://www.oxid-esales.com/en/resources/help-faq/eshop-manual/update-one-release-another

Bevor ihr mit irgendwelchen Änderungen beginnt, seit sicher das ihr ein Backup habt, von euren Dateien und von der Datenbank. Merke: Backup ist wie ein Regenschirm, immer wenn man einen braucht hat man keinen.

Dort ist genau beschrieben wie man ein Oxid Update durchführt. Grundsätzlich gibt es vier Ordner in einem Oxid Update Package. Zuerst müßt ihr das “copy_this”-Verzeichnis ins Root-Verzeichnis eures Servers übertragen. Anschließend das updateApp Verzeichnis und dieses über den Browser aufrufen mittel http://www.example.com/updateApp . Anschließend müßt ihr das Verzeichnis wieder händisch vom Server löschen, auch wenn dort steht das es bereits gemacht wurde, hat es die Anwendung bei mir nicht geschafft. Falls ihr es nicht löscht, gibt es im Backend eine Fehlermeldung.

Im Verzeichnis “changed_full” vom Oxid Update Package findet ihr neue Templates, die ihr ggf. anpassen müßt, falls ihr selbst Änderungen an den Templates vorgenommen hattet. Das Verzeichnis “templ_docu” dokumentiert nur nochmal die Unterschiede und braucht nicht auf den Server hochgeladen zu werden.

Am Ende solltet ihr noch das tmp Verzeichnis auf dem Server löschen, damit die Änderungen auch sichtbar werden.