2016-07-12 80 views
0

我們的網站用戶神祕地以其他用戶身份登錄時遇到間歇性問題。該網站建立在Concrete5 5.6.3.4版本上。這似乎是一個巨大的安全缺陷,因爲我們正在顯示私人和敏感數據,並允許現場信用卡購買。Concrete5 5.6.3.4用戶以錯誤用戶身份登錄

回答

0

該網站實施永久性Cookie,似乎是導致問題。根據this,用於cookie的散列的衝突率約爲8%。該頁面鏈接中的修補程序似乎可以緩解該問題,但不能完全消除該問題。

第二個補丁嘗試將用戶標識添加到標識以使其唯一併消除碰撞風險。似乎應該是這樣的:

public function getString($length = 12) { 
    $str = str_repeat($this->letters, 10); 
-  $hash = substr(str_shuffle($str), 0, $length); 
+  $user = new User(); 
+  if($user->getUserID()) { 
+   $hash = sprintf("%i:%s, $user->getUid(), substr(str_shuffle($str), 0, $length)); 
+  } else { 
+   $hash = sprintf("%s%i:%s", substr(str_shuffle($str), 0, $length), mt_rand(999,9999), substr(str_shuffle($str), 0, $length));