Pendlerleben

Der Weg in die Arbeit:

Aufstehen, zum Zug fahren, zum Zug gehen, in den Zug einsteigen, mit dem Zug fahren, aus dem Zug aussteigen, am Bahnhof umsteigen, in den nächsten Zug einsteigen, mit dem Zug fahren, aus dem Zug aussteigen, am Bahnhof umsteigen, zur U-Bahn gehen, in die U-Bahn einsteigen, mit der U-Bahn fahren, aus der U-Bahn aussteigen, in die Arbeit gehen.

Außerdem aus dem Pendlerleben:

zum Zug rennen, im Zug warten, auf den Zug warten, auf die U-Bahn warten, in der U-Bahn stehen, in der U-Bahn sitzen, in der vollen U-Bahn warten, am U-Bahnsteig warten, einen Sitzplatz suchen, einen Sitzplatz für meinen Mann freihalten, zur U-Bahn hetzen, hoffen, dass sich der Anschlusszug ausgeht, mit dem Taxi zum Zug fahren, im Zug schlafen, im Zug arbeiten, im Zug lesen, im Zug mit dem Handy spielen, im Zug essen, im Zug trinken, im Zug telefonieren, im Zug SMS schreiben, in der U-Bahn schwitzen, im Zug schwitzen, im Zug frieren, im Zug vom Licht gestört sein, im Zug von anderen Fahrgästen gestört werden.

Aufgedeckt: Magento Log-Tabellen

Eine Magento Community Edition 1.9.0.1 Standardinstallation enthält derzeit 337 Tabellen. Wer das Logging in Magento aktiviert hat und schon jemals einen genaueren Blick auf seine Datenbank (im laufenden Betrieb) geworfen hat wird festgestellt haben, dass einige dieser Tabellen sehr groß werden können.

Was diese Log-Tabellen eigentlich beinhalten, wofür man sie vielleicht doch benötigt und wie man sie richtig aufräumt, habe ich in meinem Blogpost im LimeSoda-Blog erklärt.

 

Sicherheit für Web-Anwendungen

Dieser Blogpost ist ursprünglich im LimeSoda Blog erschienen, ist dort aber nicht mehr verfügbar. Eine Kopie des Beitrages befindet sich deshalb hier.

Vor kurzem war eine Vielzahl an Web-Anwendungen von einem Sicherheitsfehler in OpenSSL („Heartbleed“) betroffen. Nachdem mittlerweile viele Webhosting-Provider und Webseitenbetreiber die OpenSSL Installationen aktualisiert haben, sowie Zertifikate getauscht und ihre Benutzer um Passwortwechsel aufgerufen haben, bleibt die Frage: Wie sicher sind Web-Anwendungen?

Eine dynamische Web-Anwendung besteht aus mehreren Teilen:
Auf einem physischen oder virtuellen Server laufen – je nach Hosting-Variante – eine oder mehrere Websites. Diese werden von einem Web-Server, der die Anfragen aus dem Internet entgegen nimmt, verarbeitet. Um eine Webseite auszuliefern, sind meist Anfragen an den Datenbankserver notwendig, außerdem wird dazu der Quellcode der Web-Anwendung (z.B. eine Skriptsprache wie PHP, ausgeführt). Ist die Webseite ausgeliefert, können auf dem Gerät des Benutzers client-seitig, z.B. über JavaScript, noch weitere Aktionen ausgeführt werden. Je nach Größe und Konfiguration der Web-Anwendung kommen noch weitere Komponenten zur Verarbeitung der Anfragen hinzu: Schnittstellen, Proxy-Server, Caching- und Performance Module etc.

All diese Bestandteile bedienen sich unterschiedlichen Komponenten (Frameworks, Erweiterungen,…) um die gewünschten Anfragen entsprechend abzuarbeiten. Es ist also notwendig, nicht nur die Web-Anwendung selbst, sondern auch die Gesamtheit dieses Systems zu betrachten, um eine Web-Anwendung sicher zu gestalten.

Diese Risiken für Web-Anwendungen werden regelmäßig vom Open Web Application Security Project (OWASP) herausgegeben. OWASP ist eine Community mit dem Ziel, Unternehmen und Organisationen bei Entwicklung, Kauf und Wartung zu unterstützen. Zuletzt wurden die Risiken 2013 ermittelt und veröffentlicht.

1. Injection

Durch das Einschleusen von Code oder Kommandos kann ein Angreifer die Eingabe manipulieren, und auf diese Weise unerlaubte Befehle in der Web-Anwendung oder dem zugrunde liegenden System ausführen oder, auf nicht für ihn bestimmte, Daten zugreifen.

2. Fehler in Authentisierung und Session-Management

Unzureichende Mechanismen, die die Authentizität eines Benutzers und seiner zugehörigen Sitzung feststellen sollen, ermöglichen es Angreifern, Passwörter, Schlüssel oder die gesamte Sitzung eines Benutzers zu übernehmen und unter dessen Identität Aktionen auszuführen.

3. Cross-Site Scripting (XSS)

XSS bezeichnet das entgegennehmen und ausliefern von nicht validierten Eingaben an den Browser. Ein Angreifer kann auf diese Weise Schadcode im Browser des Benutzers ausführen.

4. Unsichere direkte Objektreferenzen

Durch mangelnde Überprüfung von Objektreferenzen ist es einem Angreifer möglich, unautorisiert auf nicht für ihn bestimmte Daten Zugriff zu erlangen.

5. Sicherheitsrelevante Fehlkonfiguration

Verschiedene Bestandteile, auf denen eine Web-Anwendung aufbaut (Module, Frameworks, Anwendungen, Erweiterungen), sind meist nicht mit einer sicheren Grundkonfiguration ausgestattet. Diese Bestandteile müssen, um dauerhaft eine sichere Nutzung zu gewährleisten, entsprechend konfiguriert und regelmäßig aktualisiert werden.

6. Verlust der Vertraulichkeit sensibler Daten

Sensible Daten sind während der Verarbeitung oder bei dauerhafter Speicherung nicht ausreichend geschützt (z.B. durch Verschlüsselung). Angreifer können die Daten somit leicht stehlen oder verändern.

7. Fehlerhafte Autorisierung auf Anwendungsebene

Viele Web-Anwendungen überprüfen die Rechte eines Benutzers, bevor sie ihm spezielle Funktionen zur Verfügung stellen. Ebenso wichtig ist es, auch serverseitig bei der Ausführung einer Aktion, diese Rechte nochmals zu überprüfen.

8. Cross-Site Request Forgery (CSRF/XSRF)

Mit der Identität des Benutzers werden – durch manipulierte Webseiten und Links – unbeabsichtigt und unbemerkt Aktionen auf anderen Webseiten ausgeführt. Die Identität eines Benutzers wird somit ausgenutzt, um mit dessen Rechten zusätzliche Anfragen auszuführen.

9. Benutzen von Komponenten mit bekannten Schwachstellen

Programme, Module und andere Komponenten laufen – meist aus dem Grund der einfachen Einrichtung – mit vollen Rechten auf einem Server. Wird eine Schwachstelle einer Komponente ausgenutzt, können auf diesem Weg viele weitere Angriffe über andere Komponenten ermöglicht werden.

10. Ungeprüfte Um- und Weiterleitungen

Webseiten leiten ihre Benutzer oft auf andere interne oder externe Webseiten um. Ist keine oder eine unzureichende Überprüfung der Weiterleitungen vorhanden, können Angreifer den Benutzer auf Phishing-Seiten oder Seiten mit Schadcode umleiten.

Schon während der Entwicklung (“Programmierung”) achten wir darauf, die Einfallstore für die verschiedenen Angriffe zu minimieren. Abgesehen von diesen Maßnahmen, empfehlen wir auch folgende Punkte:

Aktuell halten

  • Aktualisieren Sie regelmäßig ihr CMS- oder Shopsystem auf die neueste, verfügbare Version.
  • Bleiben Sie auf dem letzten Stand: Informieren Sie sich, fragen Sie die Agentur ihres Vertrauens 🙂

Passwörter & Benutzeraccounts

  • Ändern Sie ihre Passwörter regelmäßig (ggf. unter Verwendung eines Passwort-Managers wie KeePass)
  • Geben Sie den Benutzern ihrer Webseite Richtlinien zur Gestaltung sicherer Passwörter vor.
  • Verwenden Sie nicht die Standard-Benutzer des CMS/Shop-Systems (“admin”). Löschen Sie diese (wenn möglich) oder benennen Sie diesen um.
  • Begrenzen Sie die Anzahl fehlgeschlagener Login-Versuche auf Ihrer Seite (und senden Sie evtl. dem Benutzer im Hintergrund ein Service-Mail, ob er seine Zugangsdaten vergessen hat).

Geben Sie nicht zu viel preis!

  • Informationen in Fehlermeldungen geben oft nützliche Informationen für Angreifer. Generische Fehlermeldungen („Falscher Benutzername oder Passwort“) sind in diesem Fall besser, als spezielle („Falsches Passwort“), wenn auch nicht so benutzerfreundlich.
  • Verbergen bzw. begrenzen Sie Informationen über die Web-Anwendung (Typ, Version,…)
  • Verbergen bzw. begrenzen Sie Informationen über den Server: PHP-Version, Webserver, Datenbanksystem. Diese Informationen lassen sich mit speziellen Anweisungen verbergen, damit sie für die Besucher (und potentielle Angreifer) ihrer Webseite nicht ersichtlich sind.

Verwenden Sie SSL

Verschlüsseln Sie die Datenübertragung zwischen den Besuchern Ihrer Internetseite und Ihrem Server mit SSL.

Grundkonfiguration

  • Die Grundkonfiguration von Anwendungen und Komponenten bietet die Möglichkeit, diese schnell in Betrieb nehmen zu können. Sicherheitsrelevante Einstellungen müssen oft erst nachträglich aktiviert werden.
  • Ändern Sie Standard-Benutzer und Standard-Pfade der Web-Anwendung: /typo3, /admin, etc. oder begrenzen Sie den Zugriff (z.B. IP-basiert) auf diese Verzeichnisse

Erweiterungen

Vorsicht ist geboten: Jede Erweiterung bringt potentiell zusätzliche Schwachstellen/Fehler (nicht nur aus sicherheitstechnischer Sicht) mit sich. Nicht jede frei verfügbare, kostenlose Extension ist auch von einem guten Programmierer entwickelt worden (obwohl es umgekehrt unglaublich tolle, kostenfreie Erweiterungen von sehr guten Programmieren gibt!).

Auf dem Server

  • Dateirechte: Dateien und Verzeichnisse mit allen Rechten (auf Unix-System „chmod 777“) kann potentiell jeder beliebig ausführen und ändern (sofern er Zugriff auf das System hat).
  • Härten Sie ihre PHP Installation: Suhosin für PHP

Überwachen & loggen

Mit Monitoring und Logging lassen sich einige Angriffe ggf. frühzeitig erkennen. Die Logfiles liefern weitere Informationen, um Maßnahmen ergreifen zu können.

  • Richten Sie ein Monitoring für ihre Webseite ein (z.B. mit UptimeRobot oder Icinga)
  • Loggen Sie die Zugriffe

Trennen Sie sich von Altem

Löschen Sie…

  • alte Installationsdateien und –verzeichnisse
  • Testfiles
  • Deaktivieren bzw. löschen Sie alte und nicht mehr benötigte Benutzeraccounts, (S)FTP- und SSH-Zugänge zu Ihrem Server.

Backup

Für den Fall der Fälle: Erstellen Sie regelmäßige Backups ihrer Web-Anwendung (Dateien, Verzeichnisse und Datenbanken).

Aufwendig (und teuer)

Viele der oben genannten Maßnahmen führen wir im Rahmen der Entwicklung unserer Web-Projekte standardmäßig bzw. in Rücksprache mit dem Kunden durch.
Einige Maßnahmen bedürfen allerdings zusätzlichem Konfigurationsaufwand oder der Unterstützung durch den Hosting-Provider.

Fragen Sie mich!

Facebook Messenger Berechtigungen

Facebook Messenger im Google Play Store:

Benötigte Berechtigungen per 4.8.2014:

Identität
  • Konten auf dem Gerät suchen
  • Kontaktkarten lesen
Kontakte/Kalender
  • Kontakte lesen
Standort
  • Ungefährer Standort (netzwerkbasiert)
  • Genauer Standort (GPS- und netzwerkbasiert)
SMS
  • SMS oder MMS bearbeiten
  • SMS empfangen
  • SMS oder MMS lesen
  • SMS senden
  • MMS empfangen
Telefon
  • Telefonnummern direkt anrufen
  • Anrufliste lesen
Fotos/Medien/Dateien
  • Zugriff auf geschützten Speicher testen
  • USB-Speicherinhalte ändern oder löschen
Kamera/Mikrofon
  • Bilder und Videos aufnehmen
  • Audio aufnehmen
WLAN-Verbindungsinformationen
  • WLAN-Verbindungen abrufen
Geräte-ID & Anrufinformationen
  • Telefonstatus und Identität abrufen
Sonstige
  • Daten aus dem Internet abrufen
  • Dateien ohne Benachrichtigung herunterladen
  • Beim Start ausführen
  • Ruhezustand deaktivieren
  • Netzwerkverbindungen abrufen
  • Verknüpfungen installieren
  • Audio-Einstellungen ändern
  • Google-Servicekonfiguration lesen
  • Über anderen Apps einblenden
  • Zugriff auf alle Netzwerke
  • Synchronisierungseinstellungen lesen
  • Vibrationsalarm steuern
  • Netzwerkkonnektivität ändern

IBM X41 + Windows 8

Nachdem mein altes X41 zuerst einige Zeit im Arbeitszimmer, dann auch 2 Jahre im Kellerraum verbracht hat, brachte mich das (so wirds gesagt) nicht so hardwarehungrige Windows 8 auf die Idee, das auf meinem X41 auszuprobieren.

Gesagt, getan. Das X41 lief auch gut 3 Jahren wilder Lagerung gleich auf Anhieb mit dem guten alten Windows XP darauf.

Eckdaten:

  • ThinkPad X41 Tablet (1866)
  • Intel Pentium (R) M processor mit 1,5 GHz
  • 1,5 GB RAM
  • 32-bit
  • kommt standardmäßig mit Microsoft Windows XP Tablet PC Edition 2005

Detaillierte Spezifikation:

http://support.lenovo.com/en_US/product-and-parts/detail.page?DocID=PD013902

Ein paar Stimmen aus dem Internet:

“Windows 7 war bereits schnell installiert, bei Windows 8 hat Microsoft das Setup nochmals beschleunigt. ”
“Also bei meinem Testsystem AMD 4800 X2 mit 320 GB SATA-Festplatte 18 Minuten für x32/x86 32-Bit und 21 Minuten für x64 64-Bit.”
“Ich war sehr überrascht, denn nach einer halben Stunde war Windows 8 schon betriebsbereit”

Mit diesen Zeiten kann mein X41 nicht ganz mithalten, dazu hier mehr:

Installation

20:21 Uhr: Start der Installation. Lange Zeit stand die Prozentanzeige bei 10%, danach gings aber gut vorwärts.

21:11 Uhr: Installation fertig, Neustart

21:25 Uhr: Einstellungen vornehmen

21:34 Uhr: Windows 8 betriebsbereit

1 Stunde und 13 Minuten nach Installationsbeginn war mein Windows 8 auf dem X41 also ready for use.

 

Treiber

Nach der Windows-Installation wurden folgende Geräte nicht gefunden:

  • Audiocontroller für Multimedia
  • Biometric Coprocessor
  • Netzwerkcontroller
  • 4 Unbekannte Geräte
  • Videocontroller

 

Benchmarks (to be continued)

26 Sekunden vom Einschalten bis zum Startscreen

8,5 Sekunden vom Einloggen bis zum Home-Screen

 

LCARS Skin für IP-Symcon

Verfolgt man das IP-Symcon Forum etwas merkt man, dass sich dort viele Hausautomatisierungsfans ein LCARS Web-Interface wünschen. Auch mein Mann war ganz Feuer und Flamme für diese Skin-Idee, was mich dazu motivierte, ein solches Skin für die Schnittmenge der Star Trek Fans und IP-Symcon User zu erstellen.

Nachdem ich meistens nur mit Magento arbeite und entwickle (und dabei auch mehr im Backend als im Frontend) nahm ich die Herausforderung “lass-den-HTML-Code-sein-und-mach-alle-Anpassungen-via-CSS” an.

Entstanden ist eine (so hoffe ich) ganz gute erste Version des IP-Symcon LCARS Skins, der Dank meinem LCARS-CI-vertrautem Mann noch verfeinert wurde.

Das WebFront unserer Hausautomatisierung läuft also nun mit LCARS-Skin. Meinen Mann freuts und mich störts zumindest nicht 😉

Der Skin ist auf Github verfügbar: https://github.com/avoelkl/IP-Symcon-vape-LCARS

Bug-Reports, Verbesserungsvorschläge, Pull-Requests etc. werden gerne via github angenommen.

lcars1

lcars5

lcars4

lcars3

lcars2

Währungsumrechnung in Magento

Dieser Blogpost ist ursprünglich im LimeSoda Blog erschienen, ist dort aber nicht mehr verfügbar. Eine Kopie des Beitrages befindet sich deshalb hier.

Magento integriert in der Community und Enterprise Edition standardmäßig die Währungsumrechnung mit dem „CurrencyConvertor“ von webservicex.net.

In den vergangenen Monaten gab es immer wieder Ausfälle dieses Webservices zur Währungsumrechnung. Diese Ausfälle dauerten auch manchmal einige Tage an, wie die Magento Community (12) auf twitter berichtet hat.

Für uns war dies der Anlass, unser eigenes Webservice zur Währungsumrechnung zu integrieren: Den Limesoda CurrencyConverter für Magento.

Der LimeSoda CurrencyConverter ist via Github frei verfügbar und rechnet Preise anhand der Euro Wechselkurse der Europäischen Zentralbank (EZB) um. Die Umrechnung ist nicht nur von bzw. zu Euro-Beträgen möglich, sondern auch zwischen den einzelnen Währungen.

Die Wechselkurse der Europäischen Zentralbank werden täglich um 15 Uhr mitteleuropäischer Zeit (CET) aktualisiert.

Im Gegensatz zu anderen, teilweise auch kostenpflichtigen, Währungsumrechnungsangeboten ist für die Nutzung der EZB-Währungsumrechnung keine Registrierung erforderlich.

Der LimeSoda CurrencyConverter bietet außerdem die Integration in einen bestehenden Magento-Shop über den Modul Manager modman an.

Um die Währungsumrechnung mit dem LimeSoda CurrencyConverter nutzen zu können, sind zumindest zwei erlaubte Währungen in einer Magento Store-View erforderlich. Diese müssen unter System > Konfiguration > Allgemein > Einrichten der Währung > Währungsoptionen konfiguriert werden.

Die automatische Umrechnung der Währungen wird unter System > Konfiguration > Allgemein > Einrichten der Währung > Einstellungen für terminierten Import definiert.

Die Kurse können außerdem im Magento Backend unter System > Währungen verwalten > Kurse eingesehen und manuell aktualisiert bzw. bearbeitet werden.

Für folgende Währungen stellt die EZB Wechselkurse (zum Zeitpunkt dieses Blogposts) zur Verfügung. Die Umrechnung ist von Euro in diese Kurse bzw. von diesen Kursen zu Euro möglich. Außerdem können Umrechnungen zwischen diesen unterstützten Währungen, z.B. von US-Dollar zu Britischen Pfund, durchgeführt werden.

  • USD: US-Dollar
  • JPY: Japanese yen
  • BGN: Bulgarian lev
  • CZK: Czech koruna
  • DKK: Danish krone
  • GBP: Pound sterling
  • HUF: Hungarian forint
  • LTL: Lithuanian litas
  • PLN: Polish zloty
  • RON: New Romanian leu 1
  • SEK: Swedish krona
  • CHF: Swiss franc
  • NOK: Norwegian krone
  • HRK: Croatian kuna
  • RUB: Russian rouble
  • TRY: Turkish lira
  • AUD: Australian dollar
  • BRL: Brasilian real
  • CAD: Canadian dollar
  • CNY: Chinese yuan renminbi
  • HKD: Hong Kong dollar
  • IDR: Indonesian rupiah
  • ILS: Israeli shekel
  • INR: Indian rupee
  • KRW: South Korean won
  • MXN: Mexican peso
  • MYR: Malaysian ringgit
  • NZD: New Zealand dollar
  • PHP: Philippine peso
  • SGD: Singapore dollar
  • THB: Thai baht
  • ZAR: South African rand

Nach der Währungsumrechnung können sich unschöne Preise (z.b. 15,47) ergeben. Viele Betreiber möchten runde Beträge als Preise darstellen, zum Beispiel auf 5, 10 oder 50 Cent genau gerundet. Dies ist eines der zukünfigten Features, die wir in den LimeSoda CurrencyConverter implementieren werden. Weitere Vorschläge für sinnvolle Erweiterungen des CurrencyConverters nehmen wir gerne hier oder als Issue auf Github entgegen.

Der LimeSoda CurrencyConverter auf Github:
https://github.com/LimeSoda/LimeSoda_CurrencyConverter