2014-01-10 4 views
0

...CGI :: 세션 및 HTTP : 로그인 (펄)에 대한 CryptoCookie는 지금까지 모든 곳에서 읽은 내용에서

CGI :: 세션 (http://metacpan.org/pod/CGI::Session)는 펄을 사용하여 세션 관리의 선호하는 방법이 될 것으로 보인다. 사용 가능한 광범위한 자습서가 있습니다.

HTTP :: CryptoCookie는 상대적으로 사용 빈도가 적습니다.

나는이 간단한 코드로 CGI :: 세션을 사용하여 쿠키를 설정 할 수 있었다 :

#Session 
my $cgi = CGI->new; 
$CGI::DISABLE_UPLOADS = 1;   # Disable uploads 
$CGI::POST_MAX  = 512 * 1024; # limit posts to 512K max 

my $session = CGI::Session->new('driver:mysql', undef, 
    { 
     TableName=>'database', 
     IdColName=>'id', 
     DataColName=>'sessionvalue', 
     Handle=>$dbh, 
    }); 

$session->expire('+1y'); 

print $session->header();  


$session->flush(); 

내가 CGI의 소스 코드에 표시되지 않습니다 :: 세션, 암호화의 조짐, 그래서 ' 조금 걱정 스럽네.

나는 CPAN 자습서를 읽기,이 줄을 알되었다

"기본 CGI으로는 :: 세션 쿼리와 쿠키를 구문 분석하는 표준 CGI를 사용합니다."

내가 HTTP : Cryptocookie를 사용할 수 있다고 생각하니? 표준 쿠키 대신 암호화 된 쿠키를 보내서 내 로그인 스크립트의 보안을 강화하는 표준 CGI 대신에? 그러나 HTTP :: Cryptocookie에 대한 문서는 매우 부족합니다. Google에서 아무 것도 찾지 못했습니다.

누군가 나를 도와 줄 수 있습니까?

답변

0

CGI :: Session의 작동 방식 때문에 HTTP :: CryptoCookie를 사용하면 아무런 이점이 없습니다. CryptoCookie의 장점은 secreat 서버 키가 아닌 쿠키가 무엇인지 파악하는 것이 불가능하다는 것입니다. 그러나 CGI :: Session 쿠키에는 세션 ID 만 포함되므로 세션 ID를 암호화하면 암호화 된 세션 ID가 공격자의 관점에서 세션 ID와 똑같이 작동하므로 도움이되지 않습니다.

+0

하지만 CGI :: Session은 세션 ID를 만들기 위해 기본적으로 MD5를 사용합니다. 동일한 세션 ID를 사용하여 쿠키를 설치하기가 어렵지 않습니다. 적어도 안전하지는 않습니까? –

+0

쿠키를 HTTPS로 제한하지 않고 CGI가 사용하는 정보가 HTTPS를 통해 전송 되어야만 md5 해시가 임의의 숫자가되므로 쿠키를 훔치는 것이 점점 더 쉽습니다. HTTP :: Cryptocookie는 md5를 깨는 것보다 훨씬 문제가되는 쿠키 도난을 방지합니다. – user1937198

+0

음, 음 ... 아직도 두 가지를 사용하여 얻지 못하는 것이 더 좋지 않습니까? 나는 의미한다. CGI : 세션은 쿠키를 사용하여 세션 ID 만 저장하고있다. 그 쿠키도 바로 도둑질이 가능하니? 그러나 CGI :: Session에 의해 생성 된 동일한 세션 ID를 보내는 HTTP :: Crypto Cookie를 사용하여 생성 된 쿠키는 상대적으로 더 좋은 옵션이되어야합니다. –