세션을 사용하지 않고 로그인 구현


9

워드 프레스는 세션을 사용하지 않습니다.

WP가 사용자가 페이지를 이동할 때 사용자 상태를 유지하기 위해 어떤 메커니즘을 사용하는지 항상 궁금했습니다.

답변:


12

베어 쿠키를 사용하고 로그인 상태 정보 클라이언트 측을 저장합니다.

여기에 이미지 설명을 입력하십시오

+

여기에 이미지 설명을 입력하십시오

=

wordpress_7339a175323c25a8547b5a6d26c49afa = 사용자 이름 % 7C1457109155 % 7C170f103ef3dc57cdb1835662d97c1e13;

이 쿠키와 소금은 어디에서 왔습니까?

소금은 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');

고유 문구는 암호화 해시 함수 에서 사용됩니다

이름이 AUTH_COOKIE 내에 저장되는 인증 쿠키는 default-constants.php에 설정된 siteurl의 md5 합계와 "wordpress_"를 연결하여 형성됩니다. 이것은 기본 동작이며 일부 상수를 미리 설정하여 구성 파일 내부에서 재정의 할 수 있습니다.

인증 쿠키는 사용자 이름, 인증 쿠키가 유효 할 때까지의 타임 스탬프, 그리고 TL; DR을 뽑은 사람들을위한 일종의 키 바이어스 해시 인 HMAC를 연결합니다. 세 개의 변수는 파이프 문자 |와 연결됩니다.

HMAC 구성 방법은 다음과 같습니다.

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

안전한가요?

이 답변의 대부분의 정보가 나온 이 기사 에 따르면 고유 한 문구가 무엇인지 알고 키가 고유하면 200,000,000,000,000,000,000,000,000,000,000 배 더 어려울 경우 초당 30 건의 요청을 보내는 데 약 1 주일 정도의 해킹이 필요합니다.


크리스 세션이 정확히 동일하지 않습니까? 세션에는 클라이언트 사이트에 쿠키가 필요하며 서버는 쿠키를 사용하여 처리중인 사용자를 식별합니다. 세션 기반 구현과 이것의 차이점이 무엇인지 알 수 없습니다.
— 평균 Joe

2
나는 갑자기 배가 고프다.
— Kevin

2
PHP 세션은 $ _SESSION super global에 로그인 정보를 저장하고 추적합니다. 브라우저를 닫으면 세션이 만료됩니다. 워드 프레스 인증 쿠키는 훨씬 더 오래 또는 몇 주 동안 지속됩니다. 참조 : tuxradar.com/practicalphp/10/1/0
— Chris_O

0

쿠키는 세션 데이터의 클라이언트 측 저장 장치입니다. WordPress Cookies

실제로, 세션없이 쿠키를 가질 수 있지만 쿠키없이 세션을 가질 수는 없습니다.


나는 당신이 그것에 틀렸다는 것을 두려워합니다. 워드 프레스는 세션을 전혀 사용하지 않습니다.
— 평균 Joe

PHP 쿠키는 PHP 세션의 일부입니다. WP가 아마도 세션 데이터 저장을 위해 서버 측 세션을 사용하지 않을 수도 있습니다 (일부 크 래피 공유 호스팅과 호환되기 위해).
— Martin Zeitler

그게 무슨 뜻인지 잘 모르겠습니다. PHP에서 세션을 사용하려면 session_start()명시 적으로 사용하여 페이지 상단에서 세션을 활성화해야합니다 . 이제 워드 프레스 session_start()의 핵심 은 어디에도 없습니다 . 내가 마지막으로 언급 한 내용이 어디에서 혼란스러워하는지보십시오.
— 평균 Joe

PHP 세션의 기본 원칙은 ... session_start ()는 서버 측 스토리지를 가능하게하는 반면 setcookie ()는 클라이언트 측 세션 데이터를 저장할 수 있다는 것입니다. 세션과 쿠키가 완전히 다르다는 아이디어를 제거하십시오. 유일한 차이점은 저장 위치입니다.
— Martin Zeitler
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.