2012-06-24 2 views
3

암호를 해싱하고, 세션 데이터를 읽을 때 사용자 에이전트와 일치하며, 사용자를 안전하게 로그인하는 데 필요한 모든 것을 해킹합니다. 세션 데이터를 안전하게 검색/읽는 방법에 관심이 있습니다.PHP가 세션 데이터를 안전하게 검색합니다.

a:6:{s:9:"user_data";s:0:"";s:7:"user_id";s:1:"3";s:9:"firstname";s:4:"Tina";s:8:"lastname";s:3:"Fey";s:8:"username";s:8:"lizlemon";s:6:"status";s:1:"1";} 

함수 (CodeIgniter의) : I '는

function get_user_id() 
    { 
     if (is_numeric($this->ci->session->userdata('user_id'))) 
     { 
      return $this->ci->session->userdata('user_id'); 
     } 
     else 
     { 
      exit(); 
     } 
    } 

예 I에는 DB 테이블에서 세션 데이터 배열로부터 사용자 ID를 얻는다 함수 ...

사용하고 id가 숫자인지 검사 만합니다. 세션 데이터를 db에 안전하게 추가 했더라도 세션 데이터를 가져 오는 것에 대해 걱정해야합니까?

+1

DB에서 메모리로 다시 가져온 후 무결성 검사 프로세스를 진행하면 다시 유효성을 검사 할 수 있습니까? 필요하지는 않지만 누군가가 가지고 있거나 꿈꾸는 각도가 있다고 확신합니다. 당신이 그것을 거기에 둔다면, 당신은 그것을 믿을 수 있어야합니다,하지만 그 상태에서 그것으로 위조 되었습니까? –

+0

주의 사항 : 클라우드 서버 또는 제 3 자 서비스와 같은 제 3 자 서비스를 처리하는 경우 잠시 동안 손이 닿지 않는 곳에서는 무결성을 확인하고 신뢰할 수있는 사항을 다시 확인해야합니다. –

+0

@ JaredFarrish 나는 그것을 함부로 시도하지 않았다. 모든 DB 상호 작용이 사용자 ID에 의존하기 때문에 가능한 한 많은 보안을 추가하려고합니다. – CyberJunkie

답변

4

NEVER 자신 만의 세션 처리기를 작성하십시오. sesion_start()$_SESSION[] 슈퍼 글로벌을 사용하십시오. 이렇게하면 PHP security session features (예 : cooke_secure, http_only 쿠키 및 use_only_cookies)을 사용할 수 있습니다.

session_start()는 암호화 넌스 (nonce) 인 매우 안전한 세션 ID를 생성합니다. 매우 안전한 엔트로피 풀인 /dev/urandom에서이 값을 가져 오도록 PHP를 구성 할 수 있으며 세션 ID를 생성하는 데 가장 좋은 방법 일 수 있습니다.

+1

CodeIgniter devs에 알려주십시오. (OP가 사용하는 원인은 ...) http://codeigniter.com/user_guide/libraries/sessions.html – poncha

+0

PHP에서 생성 된 것조차도 언급할만한 가치가 있습니다. 정보 수집과 무차별 대입 (brute force attacks)의 조합을 사용하여 페이스 북에서 돌아 오는 동안 세션 ID가 손상되었습니다. 그래서 PHP 세션이 상대적으로 안전하다는 것을 말하고 싶습니다. (버그는 이후 버전에서 무작위 엔트로피를 추가하여 수정되었습니다) –

+0

@ Cyber-Guard Enterprise가 내 게시물에 엔트로피의 소스로/dev/urandom을 사용한다고 말하고 있습니다. 이것은 php.ini를 간단하게 수정 한 것입니다. – rook

관련 문제