2011-09-26 7 views
2

내가하는 기능을 가진 클래스가, class.php 말할 수 :사용자가 보낸 쿠키는 언제입니까?

//include fun class 
$fun = new fun; 
$fun->ssl(); 
$fun->get_cookie(); 

내 질문이 함수 get_cookie은 이후 때문에 : 다른 PHP 파일에서

class fun { 
public function get_cookie() { 
$old_cookie = $_COOKIE['mycookie']; 
} 
public function ssl() { 
//redirect from http to https 
} 

을, index.php를 말할 수 있습니다 $ fun-> 사용자가 쿠키를 보낼 않습니다 SSL은() 암호화? 쿠키 코드는 $ fun-> SSL 전에 코딩되어 있기 때문에 또는() 쿠키가 암호화되지 않은 보내집니다, 실행?

답변

3

암호화가 필요한 쿠키를 통해 어떠한 것도 보내지 마십시오.

여기에 제기 된 실제 질문에 대한 답변에 관계없이 쿠키의 내용은 공개적으로 액세스 할 수 있고 안전하지 않은 것으로 간주되어야합니다.

먼저 사이트에 대한 전체 쿠키 집합이 모든 단일 웹 요청과 함께 (양방향으로) 전송됩니다. 따라서이 특정 요청에서 SSL을 사용하여 SSL을 성공적으로 암호화 한 경우에도 사용자는 사이트의 이미지에 대한 일반 HTTP 요청 만하면되며이를 전송하여 암호화되지 않은 상태로 되돌려 보낼 수 있습니다.

둘째, 쿠키가 사이트간에 누출되는 것이 전례가 아닙니다. 타사가 사용자의 쿠키를 보유 할 수있는 많은 크로스 사이트 스크립팅 해킹이 있습니다. SSL을 통해 전송 된 경우에도 사용자 컴퓨터에 암호화되어 저장되지 않습니다.

그래서 나는 초기 진술을 다시 반복 할 것입니다. 보안을 유지해야하는 쿠키를 통해 아무 것도 보내지 마십시오.

1

Wikipedia article에는 쿠키 작동 방식에 대한 매우 훌륭한 설명이 있습니다. 기본적으로 쿠키는 요청 헤더와 함께 전송됩니다. 따라서 연결이 HTTPS을 통해 이루어지지 않는 한 쿠키는 정상적으로 전송됩니다.

1

코드가 실행되기 전에 쿠키가 전송됩니다. PHP는 헤더를 읽고 전역 변수 $ _COOKIE []를 채운 다음 코드를 실행합니다. 그래서 누군가가 HTTP로 요청을한다면 그는 암호화되지 않은 쿠키를 얻게 될 것입니다.

쿠키를 만들 때 HTTPS로 요청 된 페이지에만 쿠키가 전송되도록 정의 할 수 있습니다. $secure 매개 변수와 함께 session_set_cookie_params() 또는 setcookie() 함수를 사용하면됩니다. 페이지가 HTTP로 요청 된 경우 이러한 쿠키는 보내지지 않습니다.

관련 문제