2013-04-27 3 views
1

왜 쿠키가 암호화되지 않습니까? 난 일반 텍스트로 표시하고 일반 텍스트의 원인 난, easly을 편집 할 수 있습니다 : O코드 암호 쿠키 암호화

내가 사용하고 있습니다 :

$config['sess_cookie_name']  = 'sess_id'; 
    $config['sess_expiration']  = 0; //24hours -> 8640 
    $config['sess_expire_on_close'] = TRUE; 
    $config['sess_encrypt_cookie'] = TRUE; 
    $config['sess_use_database'] = TRUE; 
    $config['sess_table_name']  = 'session'; 
    $config['sess_match_ip']  = FALSE; 
    $config['sess_match_useragent'] = TRUE; 
    $config['sess_time_to_update'] = 3000000000; 
$config['encryption_key'] = 'dfs78fh834fh83h4fhhsdifsihdfh99inf83kjwnefkjwenfknwkejnfowejnf82'; 

와 나는이처럼 보이는 후크를 사용하여 쿠키를 설정 :

function setUserCountry($country){ 

    $CI =& get_instance(); 
    $CI->input->set_cookie(
     array(
     'name'=>'user_country', 
     'value'=>str_replace(array('"',"'",">","<"),"",$country), 
     'expire'=>'8650000000', 
     'secure'=>TRUE 
     )); 
    } 

은 후크 pre_controller가 호출됩니다

$hook['pre_controller'] = //run my cookie hook setUserCountry() method 

이 쿠키 한 번 모습을 만드는 방법이다 :

enter image description here

+0

왜 쿠키 값을 암호화 하시겠습니까? 민감한 정보 인 경우 세션에 속합니다. –

+0

브라우저가 닫히거나 쿠키가 종료 될 때 세션이 만료됩니다. P!? @Pekka 웃음 – sbaaaang

+0

브라우저가 닫힐 때 세션 쿠키가 만료되지 않도록 할 수 있습니다.하지만 보안 문제가 될 수 있습니다. 그러나 현재 세션 이상으로 데이터를 저장해야하는 경우 사용자 레코드에 저장하지 않으시겠습니까? –

답변

1

그래서 배열에 set_cookie() $ name 매개 변수에 secure = true를 지정합니다.

if ($secure == FALSE AND config_item('cookie_secure') != FALSE) 
     { 
      $secure = config_item('cookie_secure'); 
     } 

이 코드는 system/core/Input.php 내부에서 문제를 일으킬 수 있습니다. 따라서 전역 쿠키 암호화를 해제하거나 어레이에 $ secure를 두지 않는 한 작동해야합니다.

편집
Cookies not beeing set, codeigniter 올바르게 문제를 당신은 비록 쿠키 헬퍼를로드 할 필요

을 지적한다. 또한 대신 post_controller_constructor 훅을 사용하십시오. http://ellislab.com/codeigniter/user-guide/general/hooks.html

또한이 방법을 사용하는 것이 좋지 않습니까? http://philsturgeon.co.uk/blog/2010/02/CodeIgniter-base-Classes-Keeping-it-DRY 쿠키를 확장 코어 컨트롤러에 추가하십시오.

+0

안녕하세요. tryed하지만 문제는 지속됩니다. 믿을 수 없게됩니다. 오, 나는 왜 그런 일이 일어나는지 전혀 모른다. 쿠키를 사용하지 않을 수도 있습니다. 도우미와 나는 쿠키를 설정하기 위해 입력 클래스를 사용합니까? : O – sbaaaang

+0

위의 편집 된 대답 – qwertzman

+0

쿠키를 만들었지 만 암호화되지 않았기 때문에 나는이 모든 것을 tryed하고이 솔루션 중 일부는 이미 내 앱에 있습니다. 문제가 지속됩니다. / – sbaaaang

4

암호화를 들어 CodeIgniter의에서 쿠키가

$config['sess_encrypt_cookie'] = FALSE; 

변화 또한

에서 암호화 키를 설정

$config['sess_encrypt_cookie'] = TRUE; 

이 줄에 config.php 파일을 변경할

$config['encryption_key'] = ""; 
+3

민감한 데이터를 클라이언트에 저장하거나 심지어 암호화하는 것에 의존해서는 안됩니다. 세션 ID (또는 더 긴 수명, 사용자 ID 및 체크섬)를 쿠키에 저장하고 중요한 정보를 데이터베이스에서 사용자가 직접 제어 할 수있게하는 것이 더 안전합니다 (다시 암호화 됨). SSL을 사용하면이 문제가 완화되지만 여전히 이상적인 솔루션은 아닙니다.또한, 쿠키를 지워 버릴 수 있습니다. 문제가 될 수 있습니다. – Basic

+0

@ user2326544 이봐, 당신이 맞다.하지만 이미 사용하고있다. $ config [ 'sess_encrypt_cookie'] \t = TRUE; 그래서 문제는 지금 그들이 왜 그들을 암호화하지 않는지 이해하고 있습니다. 오, 나는 내 대답을 편집합니다. – sbaaaang