Category: CoSchni

Laravel RateLimiter – Bruteforce Schutz

Beim Stöbern im Laravel Breeze Starter Kit ist mir der RateLimiter aufgefallen. Ich war gerade dabei einen einfach passwortgeschützten Bereich zu implementieren und dachte schon darüber nach, dies von Hand zu implementieren. Nachdem die Funktionalität jedoch schon in Laravel implementiert ist, greife ich gerne darauf zurück. Wie sie sich einfach in einen Controller implementieren läßt, zeige ich in dem nachfolgenden Beispiel:

Continue reading

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

PHP: Unterschiede zwischen && vs. &

Nachdem der Java Post zu dem Thema ein großer Erfolg war, möchte ich gerne zeigen, das es sich für PHP mit && vs. & genauso verhält. Wie bereits geschrieben, das Beispiel ist grundsätzlich unabhängig von der verwendeten Programmiersprache. Nachdem der zu dem Thema ein großer Erfolg war, möchte ich gerne zeigen, das es sich für PHP mit && vs. & genauso verhält. Wie bereits geschrieben, das Beispiel ist grundsätzlich unabhängig von der verwendeten Programmiersprache.

Continue reading

APC, APCu und Zend OPcache

Aufmerksam wurde ich durch das Shopware Backend, genauer gesagt durch die zwei roten Kreuze im Reiter “Performance checks” neben den Modulen “Zend OPcache” und “APCu”. Entgegen dem Motto “Never change a running System” entschied ich mich zu versuchen, die roten Kreuze durch grüne Haken zu ersetzen. Die Wikiseite von Shopware (http://wiki.shopware.de/performance-module) geht nur sehr knapp auf die roten Kreuze ein. Nach ein bisschen googeln bin ich auf folgende Seite gestoßen (Vorsicht: alles wird als Benutzer root durchgeführt): http://www.sysadminslife.com/linux/zend-optimizer-plus-php-beschleuniger-opcode-cache-installation-unter-debian-ubuntu-linux-mint/

Dort wird Schritt für Schritt erklärt, wie der Zend OPcache eingerichtet wird und wie anschließend überprüft werden kann, ob die Einrichtung funktioniert hat. Die selbe Anleitung kann auch benutzt werden um APCu zu installieren. Folgende Änderungen sind notwendig:


// libpcre3-dev ist dazu gekommen
apt-get install build-essential php5-dev unzip libpcre3-dev

wget https://github.com/krakjoe/apcu/archive/simplify.zip

// Inhalt für apcu.ini
extension=apcu.so
apc.enabled=1
apc.shm_size=32M
apc.ttl=7200
apc.gc_ttl=3600
apc.enable_cli=0

Nach dem Neustart vom Apache2 gab es bei mir eine Fehlermeldung, dass das Modul “APC” bereits geladen wäre, obwohl das Modul als apcu.so eingetragen ist. Nachdem ich apc.so deaktiviert hatte, verschwand die Meldung und statt roter Kreuze wurden mir grüne Haken angezeigt. Warum dieser Umstieg notwendig ist, kann im folgenden Artikel nachgelesen werden http://phpmagazin.de/news/Sind-opcache-APCu-Ersatz-fuer-APC

Gefühlt kommt mir die Shopware-Installation auch schneller vor, da ich aktuell nur wenige Produkte habe, kann dies aber auch von vielen anderen Faktoren abhängen und starken Schwankungen unterliegen.

Programme aus dem Browser heraus aufrufen

Diese Anleitung bietet einen kleinen Überblick wie einfach ein Custom Protocol eingerichtet und mit einer Anwendung verknüpft werden kann. Am einfachsten funktioniert die Einrichtung über eine Regedit-Datei mit folgendem Inhalt.


REGEDIT4

[HKEY_CLASSES_ROOT\foo]
@="URL:foo Protocol"
"URL Protocol"=""

[HKEY_CLASSES_ROOT\foo\shell]

[HKEY_CLASSES_ROOT\foo\shell\open]

[HKEY_CLASSES_ROOT\foo\shell\open\command]
@="\"C:\\Program Files\\Application\\program.exe\" \"%1\""

Quelle: http://kb.mozillazine.org/Register_protocol
Weitere Informationen: http://msdn.microsoft.com/en-us/library/aa767914.aspx

Wenn diese Datei als foo.reg gespeichert wird, ist sie auch gleich ausführbar und der Inhalt wird in die Registry geschrieben.

Der Link bspw: “foo://name@value” kann bspw. zunächst an eine .bat-Datei übergeben werden, die dann erst das Programm aufruft. Ein Beispiel welches im Internet viel zu finden ist und an welchem sich das gut verdeutlichen läßt ist Putty bzw. SSH Link.