2011-12-12 75 views
0

我有一個需要通過PCI合規性的網站。如何使用PHP創建不可預測的Cookie會話ID

該網站使用Magento 1.5.1(Magento是一個基於PHP的系統)和PCI complience失敗是可預測的Cookie會話ID。

我在這個假設下,這意味着他們希望將Magento中名爲「frontend」的cookie更改爲隨機UUID。我認爲這是可能的,而不需要修改或擴展核心,但我無法找到一個設置來做到這一點。

想法?

下面有漏洞描述:

遠程Web應用程序使用可預測的基於cookie的會話 的ID。理想情況下,會話ID是隨機生成的數字,不能被攻擊者猜到。如果會話ID是可預測的,攻擊者 可能劫持活動受害者的

回答

0

我不確定這是否會有所幫助,但這與我知道如何獲取會話設置一樣安全。我很樂意被一個比我更有知識的人糾正,因爲這會直接影響我所有的電子商務項目。

有一個current_domain()函數在下面的代碼中引用來自我的opensource framework(鏈接是包含函數的文件)。如果你不需要動態域名替換,你可以在那裏硬編碼你的域名。

<? 
ini_set('session.use_trans_sid',  false     ); 
ini_set('url_rewriter.tags',   ''      ); 
ini_set('session.use_cookies',   true     ); 
ini_set('session.use_only_cookies', true     ); 
ini_set('session.name',    sha1(current_domain() )); // current domain is a function implemented in tgsf 
ini_set('session.cookie_lifetime',  0      ); // until browser is closed. I implement this server side 

ini_set('session.hash_function',   1); // sha-1 
ini_set('session.hash_bits_per_character', 6); 

// only if host is not localhost 
ini_set('session.cookie_domain', 'www.example.com'); 

// use for localhost 
//ini_set('session.cookie_domain', null); 

ini_set('session.cookie_path', '/'); // limit as much as you can for security 
ini_set('session.cache_limiter',   'nocache'); //prevents back button displaying a page after session is dead 
ini_set('session.cookie_httponly',   true); // helps prevent xss by preventing javascript access to the session cookie (on SOME browsers, not all)