從我讀過到目前爲止無處不在......CGI :: Session和HTTP:CryptoCookie用於登錄(Perl的)
CGI ::會議(http://metacpan.org/pod/CGI::Session)似乎是使用Perl會話管理的首選方式。它有廣泛的教程可用。
HTTP :: CryptoCookie相對較少使用和已知。
我能夠通過這個簡單的代碼來設置使用CGI ::會話cookie:
#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,它會通過發送加密的cookies而不是標準的cookies來讓我的登錄腳本更安全?但有關HTTP :: Cryptocookie的文檔非常稀少。我也沒有在谷歌上找到任何東西。
也許有人可以幫助我嗎?
但CGI :: Session默認使用MD5創建sessionID,使用相同的會話ID創建cookie並不困難。所以至少這是不安全的權利? –
但是,如果您不將cookie限制爲HTTPS,並且如果您是CGI使用的信息應該通過HTTPS發送,那麼只需竊取cookie就太容易了,所以md5散列只是一個隨機數。 HTTP :: Cryptocookie不會保護你免受cookie攻擊,這是一個比打破md5更重要的問題。 – user1937198
嗯,嗯...我仍然沒有得到通過使用兩個不是更好?我的意思是說,CGI:會話只使用cookie存儲會話ID。那個cookie也是可以被盜用的?但是使用HTTP :: Crypto Cookie生成的cookie,發送由CGI :: Session生成的相同的Session ID,應該是相對更好的選擇,如果它被篡改,它會返回垃圾嗎? –