2016-12-06 6 views
1

현재 PHP 로그인 시스템을 만들고 있는데, 연구에서 제안한대로 세션 ID 쿠키를 사용한다고 생각했습니다. 물론 나는 그것을 가능한 한 안전하게 만들고 싶었고 따라서 httponly 쿠키 매개 변수를 true로 설정했습니다.정확한 쿠키 매개 변수를 사용하여 세션 ID를 생성 할 수 없습니다.

이제 session_start() 함수를 호출하기 전에 세션 쿠키 매개 변수를 설정하려고하면 문제가 발생합니다. 세션 ID 쿠키를 만들지 않는 것처럼 보입니다. 반대로 세션 ID 쿠키를 만들지는 않습니다. 물론 내가 할 경우 매개 변수 주위에 다른 방법은 설정되지 않습니다. clearify하는 그래서

,이 경우에도 세션 ID 쿠키를 생성하지 않습니다

$cookieParams = session_get_cookie_params(); 
session_set_cookie_params($cookieParams["lifetime"], 
    $cookieParams["path"], 
    $cookieParams["domain"], 
    $secure, 
    $httponly); 

session_start(); 

을 그리고 이것은 하나를 생성 않지만, 적절한 PARAMS없이.

session_start(); 
$cookieParams = session_get_cookie_params(); 
session_set_cookie_params($cookieParams["lifetime"], 
    $cookieParams["path"], 
    $cookieParams["domain"], 
    $secure, 
    $httponly); 

내가 이럴 줄과이 문제를 해결하는 방법을 모른다 왜 어떤 이유로 생각할 수 없다 (나는 내 ​​브라우저에서 내 쿠키 정보를 확인하여이 확인). 누군가 나를 도울 수 있으면 좋을 것입니다.

미리 감사드립니다.

+0

사용자가 설정하려는 값이 무엇을, 예를 들어'$의 secure'은 무엇입니까? – jeroen

+0

Secure와 httponly는 모두 true입니다. 나는 그들이 제공 한 예제를 사용했다 [link] (http://www.wikihow.com/Create-a-Secure-Login-Script-in-PHP-and-MySQL) – Daan

+0

그리고 https /를 통해 페이지를로드하고 있는가? 도메인에 ssl 인증서가 있습니까? – jeroen

답변

0

https가 아닌 http를 통해 페이지를로드 할 때 $secure 매개 변수를 true으로 설정할 수 없습니다. 그렇게하면 보안 연결을 통해서만 쿠키를 보낼 수 있다는 방금 지정한대로 쿠키가 수신되지 않습니다.

그래서 당신은 기본값을 사용하거나 수동으로 false로 설정해야합니다

$cookieParams = session_get_cookie_params(); 
session_set_cookie_params(
    $cookieParams["lifetime"], 
    $cookieParams["path"], 
    $cookieParams["domain"], 
    false, // $cookieParams["secure"] will also work if you have not modified php.ini to set it to true 
    $httponly 
); 

session_start();