(Ab)gebrüht

PHP basierte TOR-Netzwerk erkennung

Als Betreiber eines Online Shops oder z.B. eines Reiseportales ergibt sich zwangsläufig immer ein Problem: der vorsätzliche Betrug des Kunden beim Kauf. Man bleibt also also Betreiber auf der Kohle sitzen und hat im schlechtesten Fall nicht einmal eine IP die man zur Strafverfolgung nutzen kann weil der User einen Proxy / VPN oder sonstigen Anonymisierungsdienst genutzt hat.

Einer dieser Anonymisierungsdienste von dem meiner Meinung nach auch die größte Gefahr ausgeht, ist das TOR-Netzwerk.

Wer einem Betrüger aufgesessen ist der dieses Netzwerk nutzt, hat sogut wie keine Aussicht auf Erfolg was die Aufklärung angeht. Als ich mich selbst kurz damit befasst habe, habe ich eine Python Lösung zur Erkennung solcher User auf PHP adaptiert.

Somit ist bei Einsatz der PHP Klasse sichergestellt, dass Kunden zumindest nicht diesen Anonymisierungsdienst benutzen.

Das ganze ist als fertige PHP Klasse auf PHPClasses zu finden.

Über ein Voting würde ich mich freuen:

Facebooks geheuchelter Datenschutz

Als ich mich vor knapp 3,5 Jahren für ein Projekt bei Facebook registriert habe, war es in Deutschland noch derart unbekannt, dass ich sogar mit einer Mail an den Support meinen Nachnamen genehmigen lassen musste!
Als Entwickler musste man noch keine Kreditkartendaten eingeben und FBML wurde gerade erst geboren - mittlerweile ist es schon wieder Tod.

Mittlerweile ist Facebook für viele Deutschen Internetuser der Dreh und Angelpunkt Ihres Lebens geworden. Für so viele User, das den anderen Netzwerke wie MySpace, WKW und den VZ Netzwerken die User reihenweise davonlaufen. Selbst ich überlege mich bei den “anderen” abzumelden weil einfach mittlerweile alle bei Facebook sind (Gruppenzwang :)).

Seit neustem bietet Facebook an, die komplette Seite per HTTPS, also einer sicheren Verbindung, unter dem Vorwand besseren Datenschutzes zu benutzen.
Ich persönlich halte diese Funktion für so überflüssig wie Fußpilz, zumindest bei Facebook, wo Datenschutz maximal bedeutet, dass es mindestens 2 Backups davon gibt.

Warum?

Willkommen in der Welt der APPs. Diese kleinen nutzlosen Spiele, Fragebögen und nicht zu vergessen “Uberprufen Sie Ihre Profilaufrufe” Dinger.
Seit ein paar Tagen befasse ich mich wieder aktiv mit der Facebook APP Entwicklung und den Möglichkeiten die man damit als Entwickler mittlerweile hat.
Jeder von euch kennt diese „Anfrage für Genehmigung“ Dialoge solcher APPs, inklusive der Möglichkeit, sich auf X-beliebigen Webseiten mittels Facebook einzuloggen und Kommentare zu hinterlassen.

Genau hier dreht sich mein Magen um, wenn ich sehe was für Bullshit an Berechtigungen da benötigt wird, um noch mehr Bullshit auf Facebook zu verbreiten.
Jede APP kann verschiedene Stufen der Freigabe erfragen und nutzen, vergleichbar mit einer Wohnungsbesichtigung von Interessierten Nachmietern die evtl. nicht alle Zimmer sehen dürfen bis hin zum Einbrecher der sogar in der Unterwäsche wühlt.

Auch wenn ich jetzt einige Enttäuschte Gesichter erzeuge: Nicht mal mit der Maximalen Freigabestufe kann es ein APP geben die mir anzeigen kann wie viele Profilbesucher ich hatte, denn das ist schlichtweg in Facebook nicht möglich, da KEINE App das eigene Profil derart abändern könnte, dass Besucher getrackt werden können.

Wozu dient das ganze dann?

Gerade heute ging mir eine APP gewaltig auf den Zeiger:

Die APP erwartet als Freigabe unter anderem die Möglichkeit, die eigenen Bilder sehen zu können. Der Entwickler der APP sitzt also wahrscheinlich in diesen Minuten wixxend vor dem Rechner und schaut sich die Freizügigen Fotos einiger Mädels an deren Hirn beim Login in Facebook ausgeloggt wird. Dazu hat er direkt deren Namen sowie die Namen und Profilbilder aller Freunde der Person. Ihr hingegen bekommt irgendwelche Zufallszahlen als angebliche Profilbesucher präsentiert!

Ich persönlich vermute mal, mit dem „Zulassen“ Button verhält es sich genau wie mit der größten Lüge im Internet: „Ich habe die AGBs gelesen“. Niemand liest wirklich was er da „Genehmigt“ und ob das überhaupt Sinn macht (Bei den meisten Apps dürfte die Basisfreigabe mehr als ausreichend sein, denn selbst da kriege ich als Betreiber schon die Freundesliste inkl. Namen und Profilbild mit.)
Datensammler verdienen sich mit solchen Apps und naiven Usern eine goldene Nase.

Wusstet Ihr dass man in Facebook nach E-Mailaddressen suchen kann? Nein? Gebt mal eine euch bekannte E-Mailadresse in der suche ein. Über die Facebook API kann ich somit als Entwickler jede E-Maildatenbank gemütlich gegen Facebook abgleichen, auch wenn der User seine E-Mailadresse nicht freigegeben hat, noch schlimmer, ich muss nicht mal der Freund des Users sein.

Hier also 3 Gutgemeinte Tipps von mir für die Zukunft:

- Für Facebook eine eigene E-Mailadresse benutzen sie sonst niemand kennt.
- Vor dem Genehmigen einer APP Hirn einschalten und überlegen ob die Freigabe Sinn macht und ob die APP ansich überhaupt sinn macht.
- APPS die Zugriff auf die eigenen Bilder wollen sind mit Vorsicht zu genießen wenn Ihr nicht Angst haben wollt, dass eure Bilder irgendwann woanders im Internet auftauchen.

Und jetz alle schön auf „Gefällt mir“ klicken! ☺

Smarty Caching mit Xcache

Wer schon einmal mit der Template Engine “Smarty” gearbeitet hat, wird sich spätestens, wenn es um den Einsatz dieser Lösung in High Traffic Umgebungen geht, darüber ärgern dass Smarty den Cache der Templates auf der Festplatte realisiert. Aus diesem Grunde habe ich bereits vor 2 Jahren eine Lösung entworfen, welche sich nun nach langem “Test” als durchaus brauchbar erwiesen hat und ich sie somit hier mal vorstellen möchte. Grundlage ist die Tatsache, dass sich Smarty recht einfach mittels Plugins erweitern lässt, und sich somit auch ein anderer Cache Handler unterjubeln lässt. Ich benutze bevorzugt für “Single Server Lösungen” Xcache mit lokal aktiviertem variablen Cache
<?php
/**
 * Smarty Xcache Caching Handler
 *
 * @author Alexander Over 
 * @copyright 2008
 */
function xcache_cache_handler($action, &$smarty_obj, &$cache_content, $tpl_file = null, $cache_id = null, $compile_id = null)
{
  if (function_exists('xcache_isset'))
  {
    $cacheid = 'smarty.'.$tpl_file.'@'.$cache_id.'@'.$compile_id;
    switch ($action)
    {
      case 'read':
        if (xcache_isset($cacheid))
        {
          return xcache_get($cacheid);
        }
        else
        {
          return false;
        }
      case 'write':
        return xcache_set($cacheid, $cache_content, $smarty_obj->cache_lifetime);
      case 'clear':
        if (empty($cache_id) and empty($compile_id) and empty($tpl_file))
        {
      	 return xcache_clear_cache(1, 0);
        }
        else
        {
          if (xcache_isset($cacheid))
          {
            return xcache_unset($cacheid);
          }
          else
          {
            return false;
          }
        }
      default:
      	$smarty_obj->trigger_error('cache_handler: unknown action "'.$action.'"' );
        return false;
    }
  }
  else
  {
    $smarty_obj->trigger_error('cache_handler: Xcache not found!');
    return false;
  }
}
geladen wird das ganze am einfachsten folgendermaßen:

<?php
require_once 'Smarty.class.php';
require_once 'xcache_cache_handler.php';

$smarty = new Smarty();
if (function_exists('xcache_isset'))
{
  $smarty->cache_handler_func = 'xcache_cache_handler';
}

Download der Datei: xcache_cache_handler.php

Detect Opcode Cache in PHP

Vor einer Woche etwa habe ich meine erste PHP Klasse auf phpclasses.org veröffentlicht, um mal zu schauen, wie die “Gemeinde” darauf reagiert.
Ich bin überrascht, wie ich es mit dieser “Notable” Class binnen 7 Tagen in Google auf Platz 1 zum Suchbegriff “detect opcode cache” geschafft habe.

Diese Singleton Klasse ermöglicht es z.B. in einem PHP Setup auf einfache Art und Weise herauszufinden, ob auf dem gewählten Server ein Opcode-Cacher läuft oder nicht und ggf. entsprechend zu reagieren.

Wer die Klasse einsetzen möchte findet sie hier: http://www.phpclasses.org/browse/package/5930.html

In einer Woche etwa dürfte die zweite Klasse von mir folgen, welche dann einen sehr gerne gemachten Fehler - insbesondere von PHP-Anfängern gerne gemacht - auf einfache und sichere Weise unterbindet.

Einfach mal den Vogel abschiessen

Man stelle sich mal vor man ist auf dem Sommerfest der eigenen Firma.

Die Zeit ist schon fortgeschritten und man hat ein oder zwei Bierchen schon Inkludiert.

Man ist gerade dabei, das ein oder andere Bier auf der Toilette des Etablissements zu entsorgen, als man bemerkt, dass es wohl jemand mit den Zielübungen beim entsorgen des großen Geschäftes nicht so ganz genau genommen hat. Genau genommen folgender Wortlaut:

Ich: “hmm, da hat jemand auf den Boden geschissen.
Geschäftsführer: “Aha, aha, wer ist denn da auf der Toilette ?”.

Merke: erst prüfen WER da gerade am Pinkeln ist, dann feststellen, dass jemand ins Eck geschissen hat.

:D