음, this bug을 보면 문제가되는 것 같습니다.
the source code에 파고,이 라인은 일을 만드는 것입니다 :
이제
srand(Configure::read('Security.cipherSeed'));
, 왜 그 일을합니까? rand()
은 의사 랜덤 알고리즘을 구현하기 때문에. 따라서 시드가 알려진 시드의 경우 이론적으로 동일한 일련의 무작위 출력을 생성 할 수 있습니다. 우리가 직접 우리가하지 않는 한 수호신 패치가 설치 (파종하고 있기 때문에 우리는이 방법으로 문제가 아니라는 것을 알고
PHPAPI long php_rand(TSRMLS_D)
{
long ret;
if (!BG(rand_is_seeded)) {
php_srand(GENERATE_SEED() TSRMLS_CC);
}
이 작동되는지 확인하기 위해,이 the PHP source code for rand()
보면 특히 내부 php_rand
기능 보자 서버가 있으면 항상 다시 시드되어 작동하지 않습니다).
#ifdef ZTS
ret = php_rand_r(&BG(rand_seed));
#else
# if defined(HAVE_RANDOM)
ret = random();
# elif defined(HAVE_LRAND48)
ret = lrand48();
# else
ret = rand();
# endif
#endif
와아, 무슨 일이 있었는지 아니? 서버 사양에 따라 4 가지 임의 라이브러리 (rand()
, random()
, lrand48()
또는 자체 임의 함수 php_rand_r
) 중 하나를 사용할 수 있습니다! 이것이 서버 설치를 통해 이식 할 수없는 이유입니다.
대신 MCrypt 또는 GPG과 같은 실제 암호화 라이브러리를 사용하십시오.
편집 : 케이크에 대해이 주제에 bug report을 제출했습니다.
감사합니다. ircmaxell. 암호 함수를 살펴 봤지만 어떻게 작동하는지 전혀 몰랐습니다. 나는 이러한 encription 라이브러리를 사용해 보겠습니다. – Min
나는 이것도 가지고 있었고, 서버를 바꿀 때 로그인하거나 쿠키를 사용할 수 없었다! – Dunhamzzz