Evercookie – ochrona ciasteczka przed odczytem

Poprzedni artykuł o Evercookie ( http://darkgl.pl/index.php/2014/04/10/evercookie-prawie-niezniszczalne-ciasteczka/ ) W całym poście będę używał jQuery , php wraz z biblioteką mcrypt. Cały proces można opisać bardzo łatwo zamiast przechowywać w ciasteczkach wrażliwe dane w postaci łatwej do odczytania zaszyfrujemy je po stronie serwera algorytmem RIJNDAEL 128 ( podam też link do kodu aes ). Kod JavaScript zapisanie ciasteczka
var ec = new evercookie();

$.ajax({
type: "POST",
url: "encode.php"
}).done(function( msg ) {
ec.set( "secret" , msg );
});
Kod PHP zakodowanie ciasteczka
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
$iv = mcrypt_create_iv($iv_size, MCRYPT_DEV_URANDOM);
$key = pack('H*', "bcb04b7e103a0cd8b54763051cef08bc55abe029fdebae5e1d417e2ffb2a00a3");
$text = "Very secret text !";

echo mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $text, MCRYPT_MODE_CBC, $iv);
Kod JavaScript odczytanie ciasteczka
var ec = new evercookie();

ec.get( "secret", function(value) {
$.ajax({
type: "POST",
url: "some.php",
data: { data: value }
})
});
Kod PHP odkowanie ciasteczka
$iv = '';//wektory inicializujący
$key = pack('H*', "bcb04b7e103a0cd8b54763051cef08bc55abe029fdebae5e1d417e2ffb2a00a3");
$text = $_POST[ 'data' ];
$decryptedText = mcrypt_decrypt( MCRYPT_RIJNDAEL_128 , $key, $text, MCRYPT_MODE_CBC, $iv );
Wektor inicjalizujący ( $iv ) musi być ten sam podczas kodowania i dekodowania dlatego $iv z pierwszego skryptu musimy gdzieś zapisać np. w bazie danych. Linki z których korzystałem http://php.net/manual/en/book.mcrypt.php http://stackoverflow.com/questions/6770370/aes-256-encryption-in-php Implementacja aes http://www.movable-type.co.uk/scripts/aes-php.html

3 komentarzy o “Evercookie – ochrona ciasteczka przed odczytem

  1. Przecież to nie ma sensu. Już lepiej w ciasteczku trzymać tylko jakiś session_id, a na serwerze zamiast szyfrować i tracić na to czas zostawić resztę danych.

  2. 1. w takim przypadku session_id jest łatwe do modyfikowania
    2. Nie zawsze wszystko trzeba robić w jeden jedyny słuszny sposób

Dodaj komentarz

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.