realizacja logowania bez korzystania z sesji


9

Wordpress nie korzysta z sesji.

Zawsze zastanawiałem się, jakiego mechanizmu używa WP do utrzymania stanu użytkownika, gdy użytkownik przechodzi ze strony na stronę?

Odpowiedzi:


12

Wykorzystuje nagie pliki cookie i przechowuje informacje o stanie logowania po stronie klienta.

wprowadź opis zdjęcia tutaj

+

wprowadź opis zdjęcia tutaj

=

wordpress_7339a175323c25a8547b5a6d26c49afa = nazwa użytkownika% 7C1457109155% 7C170f103ef3dc57cdb1835662d97c1e13;

Skąd pochodzą te wszystkie ciasteczka i sól?

Sól znajduje się w pliku wp-config.php:

/**#@+
 * Authentication Unique Keys and Salts.
 *
 * Change these to different unique phrases!
 * You can generate these using the {@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org secret-key service}
 * You can change these at any point in time to invalidate all existing cookies. This will force all users to have to log in again.
 *
 * @since 2.6.0
 */
define('AUTH_KEY',         'put your unique phrase here');
define('SECURE_AUTH_KEY',  'put your unique phrase here');
define('LOGGED_IN_KEY',    'put your unique phrase here');
define('NONCE_KEY',        'put your unique phrase here');
define('AUTH_SALT',        'put your unique phrase here');
define('SECURE_AUTH_SALT', 'put your unique phrase here');
define('LOGGED_IN_SALT',   'put your unique phrase here');
define('NONCE_SALT',       'put your unique phrase here');

Unikalne frazy są używane w funkcji skrótu kryptograficznego

Ciasteczko uwierzytelniające, którego nazwa jest przechowywana w AUTH_COOKIE, które powstaje przez połączenie „wordpress_” z sumą md5 siteurl ustawioną w default-constants.php. Jest to zachowanie domyślne i można je zastąpić w pliku konfiguracyjnym, ustawiając niektóre stałe z góry.

Ciasteczko uwierzytelniające jest konkatenacją nazwy użytkownika, znacznikiem czasu, do którego plik cookie uwierzytelniania jest ważny. Oraz HMAC, który jest swego rodzaju skrótem kluczowym dla tych, którzy wyciągnęli TL; DR w tej chwili. Trzy zmienne są powiązane ze znakiem potoku |

Oto jak zbudowany jest HMAC:

$hash = hash_hmac('md5', $username . '|' . $expiration, wp_hash($username . substr($user->user_pass, 8, 4) . '|' . $expiration, $scheme));

Czy to jest bezpieczne?

Zgodnie z tym artykułem, skąd pochodzi większość informacji zawartych w tej odpowiedzi, włamanie do hakera zajęłoby około tygodnia wysyłanie 30 próśb na sekundę, gdyby wiedzieli, co to jest Twoja wyjątkowa fraza i 200 000 000 000 000 000 000 000 000 000 000 000 razy więcej, jeśli twoje klucze są unikalne.


Chris. Czy sesje nie są dokładnie takie same? Sesje wymagają plików cookie w witrynie klienta, a serwer używa ich do identyfikowania użytkownika, z którym ma do czynienia. Nie widzę różnicy między implementacją opartą na sesji a tym.
Średnia Joe

2
Nagle jestem głodna.
Kevin

2
Sesje PHP przechowują i śledzą dane logowania w super globalnej $ _SESSION. Sesja wygasa po zamknięciu przeglądarki. Plik cookie WordPress Auth trwa znacznie dłużej, a nawet tygodnie. Zobacz: tuxradar.com/practicalphp/10/1/0
Chris_O

0

Pliki cookie to tylko przechowywanie danych sesji po stronie klienta ... Pliki cookie WordPress

W rzeczywistości można mieć pliki cookie bez sesji, ale żadnych sesji bez plików cookie.


Obawiam się, że nie masz racji. wordpress w ogóle nie używa sesji.
Średnia Joe

Ciasteczka PHP są częścią sesji PHP - nawet jeśli WP prawdopodobnie nie wykorzystuje sesji po stronie serwera do przechowywania danych sesji (aby być kompatybilnym z niektórymi kiepskimi udostępnianymi hostami).
Martin Zeitler

Nie jestem pewien, co przez to rozumiesz. Aby korzystać z sesji w php, musisz włączyć sesje u góry strony, używając session_start()jawnie. Teraz, oczywiście, wordpress nie ma session_start()nigdzie w swoim rdzeniu. Widzisz, gdzie jestem zaskoczony twoim ostatnim komentarzem?
Średnia Joe

To tylko podstawowe zasady sesji PHP ... session_start () umożliwia przechowywanie po stronie serwera, podczas gdy setcookie () umożliwia przechowywanie danych sesji po stronie klienta. Może po prostu pozbyć się pomysłu, że sesje i pliki cookie to coś zupełnie innego - jedyną prawdziwą różnicą jest miejsce przechowywania.
Martin Zeitler
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.