Browser Fingerprinting mit JavaScript

Diese JavaScript-Funktion erzeugt eine nahezu eindeutige Kennung von einem Webbrowser. Über fest im Browser eingestellte Parameter (z.B. Installierte Plugins, Auflösung, usw.) kann so ein Benutzer mit einer hohen Warscheinlichkeit eindeutig identifiziert werden. Das Ganze ist mit sehr geringem Programmieraufwand realisierbar.

Code:

<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
<script src="https://raw.github.com/placemarker/jQuery-MD5/master/jquery.md5.js" type="text/javascript"></script>
<script type="text/javascript">

function getBrowserFingerprint()
{
    var sFP = "";
    sFP+="Resolution:"+window.screen.availWidth+"x"+window.screen.availHeight+"\n";
    sFP+="ColorDepth:"+screen.colorDepth+"\n";
    sFP+="UserAgent:"+navigator.userAgent+"\n";    
    sFP+="Timezone:"+(new Date()).getTimezoneOffset()+"\n";
    sFP+="Language:"+(navigator.language || navigator.userLanguage)+"\n";
    document.cookie="sFP";
    if (typeof navigator.cookieEnabled != "undefined"
        && navigator.cookieEnabled == true
        && document.cookie.indexOf("sFP") != -1)
    sFP+="Cookies:true\n";
    else
    sFP+="Cookies:false\n"
    sFP+="Plugins:"+jQuery.map(navigator.plugins, function(oElement)
                                                  {
                                                    return "\n"+oElement.name+"-"+oElement.version;
                                                  });
    return $.md5(sFP);
}

alert(getBrowserFingerprint()); //d36fd202c2ab01a371c54b72b0e8e3c0

</script>

Verwendete Bibliotheken & Plugins:

Demo: jsFiddle

PHP: Verschiedene IP-Ranges umleiten

Über die Methode redirectIpRanges können IP-Adressen aus verschiedenen Adressbereichen auf eine beliebige Zielseite umgeleitet werden. Der erste Parameter enthält die Adressbereiche, über den zweiten Parameter wird die Zielseite definiert.

Code:

$aMyIPRange[] = '127.0.0.3/127.0.0.3';
$aMyIPRange[] = '127.0.0.0/127.0.0.10';

redirectIpRanges($aMyIPRange, 'http://heise.de/');
                       
function redirectIpRanges($aIPRange, $sDestination)
{
    foreach((array) $aIPRange as $sRange)
    {
        $aIPRange = explode('/', $sRange);
        $iStart   = ip2long($aIPRange[0]);
        $iEnd     = ip2long($aIPRange[1]);
        $iIP      = ip2long($_SERVER['REMOTE_ADDR']);
       
        if ($iIP >= $iStart && $iIP <= $iEnd)
        header('Location: '.$sDestination);
    }
}

Zufälligen String mit PHP erzeugen

Diese PHP-Funktion erzeugt eine zufällige Zeichenkette. Über den Parameter „iLength“ kann die Länge des Strings gesteuert werden. Der Parameter „sCharacters“ definiert, aus welchen Zeichen der String bestehen soll.

function getRandomString($iLength = 10, $sCharacters = null)
{  
    if($sCharacters == null)
    $aCharacters = array_merge(range('A', 'Z'), range('a', 'z'), range(0,9));
    else
    $aCharacters = str_split($sCharacters);
   
    for ($sRandomString = '', $i = 0; $i < $iLength; $i++)
    $sRandomString.= $aCharacters[array_rand($aCharacters)];
   
    return $sRandomString;
}

var_dump(getRandomString()); //Y6K7UHey4l
var_dump(getRandomString(2, 'ab')); //ba
var_dump(getRandomString(8, 'ab')); //bababbaa
var_dump(getRandomString(5, 'ABCDEFGHIJKLMO1234%&$§"$%')); //BM$M$

Verzögertes „onmouseover“-Event mit jQuery

Manchmal kommt es vor, dass eine Aktion nicht direkt ausgeführt werden soll, sondern leicht verzögert. Beispielsweise möchte man einen Tooltip realisieren, der erst eingeblendet wird, wenn die Maus einige Zeit über das entsprechende Element gehalten wird. Hier kann dieser Code-Schnippsel behilflich sein.

$("#myTarget").mouseover(function()
{
    $("#myTarget").addClass("active");
    setTimeout(function()
    {
        if($("#myTarget").hasClass("active"))
        alert("Verzoegert");
    }, 1000);
});

$("#myTarget").mouseleave(function()
{
    $("#myTarget").removeClass("active");
});