Ciasteczka szyfrowane?

0

Witam,

Potrzebuję w ciasteczkach przechowywać adres ip oraz wersję przeglądarki mam pytanie odnośnie szyfrowania ciasteczek
Czy zwykła funkcja hash do takiej potrzeby wystarczy?

Może jakieś inne pomysły ?
Jakieś porady etc.?

Pozdrawiam.

0

Może cuś takiego
Ewentualnie jeszcze base_64_encode()

$cookiename = ...
$ipaddr = ...
$vbrowser = ...

$salt="somestring";
$ip_hash= SHA2(salt + $ipaddr);
$vbrowser_hash= SHA2(dalt + $vbrowser);
setCookie($cookiename,$ip_hash,$vbrowser_hash);
1

a czemu w ciasteczkach? Nie możesz wykorzystać sesji i po stronie serwera trzymać ip i przeglądarkę identyfikując po id sesji?

0

Chcesz je szyfrować czy hashować?
No i przede wszystkim, jak zauważył @mr_jaro: dlaczego w ogóle chcesz trzymać te dane w ciasteczkach?

0

Jest mi to potrzebne ponieważ potrzebuję zrobić również odliczanie...

Chciałbym je szyfrowac

0

Wydaje mi się, że mamy do czynienia z problemem X/Y - jakie odliczanie potrzebujesz zrobić?

0

Odliczanie zrobię sam, to odstawiamy.

Potrzebuję wiedzieć co mam rozumieć przez słowo **szyfrować ** ciasteczka.
Jak tego dokonać oraz jaka metoda będzie dla tego najlepsza?

0

najprościej to rot13, dla bezpieczeństwa możesz zrobić rot13(rot13(content))
ale pozostaje pytanie - dlaczego?
jak chcesz zrobić odliczanie czegokolwiek na serwerze, gdzie serwer co jakiś czas wysyła trigger do klienta, to może prościej użyć websocketów?

0

Jeśli to ma być jakieś odliczanie w stylu Codility, z zapamiętywaniem i uwzględnianiem zamknięcia przeglądarki to może i tak. Ale można dość łatwo wpaść na to że coś jest szyfrowane rot13, do takich rzeczy po stronie serwera to jest albo mcrypt_encrypt i mcrypt_decrypt (i już deprecated w PHP 7.1):
https://www.php.net/manual/en/function.mcrypt-encrypt.php
albo też openssl_encrypt / openssl_decrypt:
https://www.php.net/openssl_encrypt

Ale dalej. Chcąc zapisać user agent albo samą wersję przeglądarki oraz IP klienta czyli to co jest w $_SERVER['HTTP_USER_AGENT'] oraz $_SERVER['REMOTE_ADDR'] to jeżeli to jest jakaś tablica asocjacyjna w PHP to bez szyfrowania serializujesz tablicę a potem przez kodowanie transportowe base64_encode zapisujesz do cookie a przy odczycie robisz na odwrót. Przy użyciu mcrypt czy openssl tak samo masz base64 co jest pokazane pod linkami wyżej.

Natomiast co do hashowania typu SHA1, SHA2 jest dość ciekawy mechanizm tzw. signed cookie czyli z użyciem tajnego klucza (soli) robisz hash_hmac, czyli hash z user agent, nazwy ciasteczka, wartości do zapisu złączonych razem i tajnej soli, następnie dopisujesz to z separatorem do tego co ma być zapisane w cookie.
https://github.com/koseven/koseven/blob/master/system/classes/Kohana/Cookie.php

Powyższe rozwiązanie stosowane możliwe że i w innych frameworkach ma na celu kontrolę integralności bo każda próba ręcznej modyfikacji wartości ciasteczka (w FF składowane w SQLite) albo inna nazwa ciasteczka, inny user agent i pomijając już możliwość kolizji SHA1 jako bardzo mało prawdopodobne, to system powinien ze względu na stwierdzenie niezgodności hashy takie ciasteczko odrzucić.

1 użytkowników online, w tym zalogowanych: 0, gości: 1