Category: Allgemein

BASE: Passwort size matters

Als ich heute auf der BASE-Seite mein Passwort ändern mußte, ein Initial-Passwort wird einem per SMS zugeschickt, war ich etwas überrascht über die Angabe der Passwortlänge bzw. erinnerte mich das an ein Gif, welches bestimmt schon etwas älter ist, aber deshalb nicht weniger wichtig, ganz im Gegenteil, denn mit steigender Rechner-Power bzw. dem Cloud Computing stehen heute für vergleichswenig wenig Geld fast unendliche Ressourcen zur Verfügung.

Zunächst der Ausschnitt aus der BASE-Webseite:

BASE Passwort Richtlinie

BASE Passwort Richtlinie

Wie auf dem Ausschnitt zu sehen, soll das Passwort genau 8 (in Worten acht) Zeichen lang sein. Erwartet hätte ich eine Angabe wie “mehr als 8 Zeichen”.

Intel Passwort Komplixität

Intel Passwort Komplixität

Basierend auf der Grafik werden für ein 8 stelliges Passwort nur ca. 15 Stunden benötigt. Mich würde wirklich mal der Grund interessieren, warum das Passwort auf acht Stellen begrenzt ist. Ich hoffe das Passwort wird nicht im Klartext gespeichert und das entsprechende Datenbankfeld ist nur 8 Zeichen lang.

Anbieter SSL Zertifikate wie Sand am Meer

Ganz zu Beginn meines Server-Wechsels zu Hetzner hatte ich mir ein signiertes SSL Zertifikat mit einer Laufzeit von zwei Jahre gegönnt. Nach Ablauf der zwei Jahre habe ich es nicht wieder erneuert, da mir auch irgendwo der Mehrwert gefehlt hat. Ich benutzte es damals zum Aufruf einer Administrationsoberfläche, die rote Seite im Chrome Browser mit dem entsprechenden Hinweis, bzgl. dem abgelaufenen SSL-Zertifikat, hat mich nicht weiter gestört, denn die Verbinung war weiterhin verschlüsselt. Nachdem Google jetzt bekannt gegeben hat, die Verbindungsverschlüsselung einer Seite zukünftig als Ranking-Faktor heranzuziehen, bin ich am überlegen wieder ein SSL Zertifikat zu kaufen.

Anforderungen an ein SSL-Zertifikat

Sowohl Anbieter als auch die SSL-Zertifikate selbst, scheint es mittlerweile, wie Sand am Meer zu geben, daher ist eine genaue Definition der Anforderungen wichtig um später besser abzuschätzen zu können, welche Eigenschaften benötigt werden:

  • Verschlüsselung: Die scheint bei allen Anbietern ähnlich zu sein, von daher gibt es hier keine besonderen Anforderungen. Der Unterschied zwischen der “Verschlüsselungstiefe” und der “Tiefe des Root-Zertifikats” ist im folgenden Artikel erklärt: http://security.stackexchange.com/questions/19473/understanding-2048-bit-ssl-and-256-bit-encryption.
  • Browser-Kompatibilität: Abhängig vom jeweiligen SSL-Zertifikat kann es besonders bei mobilen Browsern trotz gültigem Zertifikat zu einer Warnmeldung kommen, da die Trusted Autority dem Browser nicht bekannt ist. Es empfiehlt sich die Möglichkeit zu nutzen vorher ein Testzertifikat zu erstellen und auf mögliche Inkompatibilitäten vorab zu testen
  • Grüne Adresszeile: Beim Aufruf von bspw. https://www.ing-diba.de erscheint in der Adresszeile der Hinweis “ING-DiBa AG [DE]” im Vergleich dazu wird beim Aufruf von https://www.google.de nur das “https” grün. Interssant wäre zu wissen, wie viele Leute auf die grüne Adresszeile achten bzw. entsprechend handeln wenn dort nicht der Name der erwarteten Organisation erscheint. Für mich bietet die Funktion derzeit keinen Mehrwert, weshalb ich die Kosten und den zusätzlichen Aufwand bei der Beantragung einspare
  • Sub- und Multi-Domains: Theoretisch kann hinter einer IP-Adresse nur ein SSL-Zertifikat, was nur für eine Domain gültig ist, hinterlegt werden. Bei mehreren Web-Projekten, auf einem Server und der begrenzten Anzahl an IPv4-Adressen kann dies schnell teuer werden, wenn weitere IP-Adresse dazu gebucht werden müssen. Auch Subdomains sind eine zweite Domains, weshalb bei der Bestellung darauf geachtet werden sollte, ob bspw. mit oder ohne “www” der Standard ist, welcher abgesichert werden soll.
  • Laufzeit: I.d.R. beträgt die Laufzeit zwischen 1 und 3 Jahren. Auf jeden Fall empfiehlt es sich im Kalender eine entsprechende Erinnerung bzgl. dem Ablauftermin einzurichten und die initiale Bestellung nicht zwischen Weihnachten und Neujahr zu erledigen, damit einem “Unsere Internetseite funktioniert nicht mehr”-Anrufe erspart bleiben.
  • Preis: Die Preise variieren stark abhängig von den jeweiligen Eigenschaften, der Laufzeit und dem Anbieter bzw. der Certification Authority.

Anbieter SSL Zertifikate

Folgende SSL Zertifikats Anbieter werde ich mir näher anschauen:

  • PSW Group (https://www.psw.net)
  • GoDaddy (https://de.godaddy.com)
  • Speed IT (https://www.speedit.org)
  • Force SSL (http://forcessl.com/)
  • SSL Market (https://www.sslmarket.de)
  • icertificate (https://icertificate.eu/)
  • Trustico (http://www.trustico.de/)
  • GlobalProtec (http://globalprotec.com/de/)
  • SSL Point (https://www.sslpoint.com/de/)
  • Namecheap (https://www.namecheap.com)

Für welchen Anbieter ich mich entschieden habe, schreibe ich in einem späteren Artikel.

Online PHP IDE mit Smart Code Completion

Berufsbedingt arbeite ich derzeit an zwei verschiedenen Laptops, wobei ich auf einem keine Administratorenrechte besitze. Da nicht immer beide Laptops mitnehmen möchte, bzw. grundsätzlich angehalten bin, auf dem Laptop ohne Administratorenrechte keine fremde Software zu installieren, suche ich nach einer passenden Online IDE. Nachdem ich jetzt ein paar Sachen ausprobiert habe, eine Zusammenfassung meiner Erfahrungen im Bereich Online PHP IDE mit Smart Code Completion.

Arten von Online IDEs

Grundsätzlich gibt es zwei verschiedene Arten von Online IDEs:

  • Cloud IDE: Unter einer Cloud IDE verstehe ich Angebote wie bspw. Cloud9 (https://c9.io/) oder Codio (https://codio.com).
  • Self-Hosted IDE: Es finden sich im Internet auch eine Reihe von Download-Paketen für den eigenen Server wie bspw. Codiad (http://codiad.com/) oder ICEcoders (https://icecoder.net/).

Unabhängig ob online Cloud IDE oder online Self-Hosted IDE im Gegensatz zu offline IDEs wie bspw. Eclipse oder Netbeans sind die online Varianten oft kostenpflichtig bzw. gibt es verschiedene Pakete.

Außerdem bin ich noch auf eine dritte Art von “Online IDE” gestoßen, die ich bisher jedoch noch nicht getestet habe. Bei TheNextWeb (http://thenextweb.com/google/2013/11/21/google-building-chrome-app-based-development-environment-using-dart-polymer/) wird über ein IDE-Plugin berichtet, welches direkt im Chrome Browser läuft – Chromedeveditor (https://github.com/dart-lang/chromedeveditor). Aus der Beschreibung wird nicht ganz klar ob damit nur JavaScript und Dart Anwendungen geschrieben werden können oder ob auch andere Sprachen unterstützt werden.

Code Completion vs. Code Intelligence

Zunächst hatte ich geglaubt, dass mein gesuchtes Feature unter dem Begriff “Code Completion” existiert. Jedoch bezeichnet Code Completion nur das Feature, das bereits bekannte PHP-Funktionen, wie bspw. “substr” und “substr_count” bei der Eingabe von “sub” und dem gleichzeitigem Drücken von “STRG” + “Leertaste” entsprechend vorgeschlagen werden.

Code Completion in Netbeans

Code Completion in Netbeans für PHP Standardfunktionen

Dies wird oftmals einfach über eine zuvor definierte XML-Datei erreicht und erfordert kein Code Verständnis.

Durch einen Artikel bei StackOverflow (http://stackoverflow.com/questions/1738696/php-ide-with-best-code-completion) habe ich dann gemerkt, dass ich mindestens nach “Smart Code Completion” bzw. “Code Assistance” oder auch “IntelliSense” suchen muss.

Online PHP IDE mit Smart Code Completion aka Code Assistance aka IntelliSense

Verwöhnt von den offline IDEs Eclipse PDT (https://eclipse.org/pdt/) und Netbeans (https://netbeans.org) bin ich auf der Suche nach einer Online IDE, die neben Code Completion, auch Smart Code Completion aka Code Assistance aka IntelliSense beherrscht.

In praktischen Tests mit c9, Codio und ICEcoders war keine der Online IDEs in der Lage mir die passenden zugehörigen Methoden eines selbst definierten Objektes vorzuschlagen. Entweder es gibt grundsätzlich keine Vorschläge oder nur die Standard-PHP-Funktionen oder einfach alle Funktionen unabhängig ob sie zum jeweiligen Objekt gehören. Besonders bei der Objektorientierten Programmierung (OOP) ist das Vorschlagen der passenden Methoden besonders hilfreich für eine schnelle und fehlerfreie Programmierung. Außerdem wird neben dem reinen Methodennamen, wenn entsprechend angegeben, auch die Dokumentation zu den jeweiligen Variablen angezeigt und auf korrektes Type Hinting (http://php.net/manual/de/language.oop5.typehinting.php) geachtet.

Online PHP IDE mit Smart Code Completion gesucht wie in Netbeans für selbst definierte Methoden

Smart Code Completion

Weitere Links

Für weitere Informationen bzgl. Online PHP IDE mit Smart Code Completion ist der englischsprache Wikipedia-Artikel Comparison of JavaScript-based source code editors lesenswert. In diesem wird nochmals dargestellt, welche Editoren hinter den oben genannten Online IDE Diensten stecken und über welche Funktionen diese verfügen. Die Smart Code Completion aka Code Assistance aka IntelliSense ist in der Features-Liste bisher noch nicht erwähnt, wodurch es immer auf den konkreten Einzeltest ankommt.

Für Hinweise in den Kommentare bzgl. weiterer möglicher Kandidaten von Online PHP IDE mit Smart Code Completion würde ich mich wirklich freuen, gerne auch kostenpflichtige Angebote.

PHP Unterschied zwischen == und ===

Seit PHP4 gibt es die Möglichkeit einen typsicheren Vergleich durchzuführen, dazu wird einfach ein weiterer Vergleichsoperator “=” angehängt. Neben dem reinen Wert wird somit auch der Typ verglichen, wodurch die Typ-Sicherheit verbessert wird. Das folgende PHP-Beispiel erscheint zwar trivial und soll zunächst nur mal den Unterschied verdeutlichen. Wichtig ist ein typsicherer Vergleich bei der Verwendung von eigenen Objekten und Validierung von Benutzereingaben.

[php]
<?php

$a = 1; // int
$b = "1"; // string

var_dump($a);
var_dump($b);

if($a == $b){
echo "Typ-unsicher!";
}

echo "\n";

if($a === $b){

}else{
echo "Typ-sicher!";
}
[/php]

Die Ausgabe ist:

[php]
int(1)
string(1) "1"
Typ-unsicher!
Typ-sicher!
[/php]

PHP typsicherer Vergleich: Ungleich und doch gleich

Die Erweiterung der Vergleichsoperatoren um Typsicherheit ist auch bei weiteren Vergleichen möglich, wie bspw. ungleich:

[php]
if($a != $b){

}else{
echo "A ist gleich B";
}

if($a !== $b){
echo "A ist ungleich B";
}
[/php]

Dieses Beispiel verdeutlicht nochmals was Typsicherheit bedeutet, A hat zwar den selben Wert wie B, aber die Variablen sind nicht vom selben Typ.

Eine Übersicht für alle PHP Vergleichsoperatoren gibt es bei PHP.net

Die Webseite wird so groß dargestellt

Zunächst konnte ich es nicht glauben, als der Kollegen, welcher in einem IT-Beratungsunternehmen arbeitet, mit der Fehlerbeschreibung zu mir kam, dass manche Internetseiten vergrößert dargestellt werden würden und er sich nicht erklären kann, wodurch dies verursacht wird. Gerne erinnere ich mich an eine E-Mail von einer Kundin zurück, die das selbe Problem hatte, mir dem Hinweis, dass es nur an ihrem Rechner wäre und ob wir etwas spezielles programmiert hätten.

Sowohl bei der Kundin also bei meinem Kollegen half schließlich die Tastenkombination “STRG” + “0” die Webseiten wieder auf ihre ursprüngliche Größe zu reduzieren. Verursacht wird die Vergrößerung durch “STRG” + “+” bzw. geht natürlich auch die Verkleinerung mit “STRG” + “-“. Außerdem kann man die Ansicht durch Drücken der “STRG”-Taste und gleichzeitiges Drehen des Mausrades beeinflussen.