2014-07-13 26 views
0

我有一個普遍的used_id,將腦插座(https://github.com/BrainBoxLabs/brain-socket)在Laravel這樣來使用:Laravel:如何隱藏/讓用戶ID JS不可編輯用腦插座時

window.userId = {{ $user->id }};

這將在接收通知,消息等時使用。問題是,因爲它是JS,所以可以在DOM中編輯window.userId(就像使用螢火蟲一樣)。所以用戶可以從其他用戶那裏得到通知,這不應該是。

有沒有對策呢? (我使用Sentry包得到用戶ID)

  • 我一直在考慮爲每個用戶使用唯一的渠道,而不是基於他們的ID,但會是矯枉過正?而且我還不知道如何在laravel中做到這一點?

回答

0

您無法阻止用戶編輯javascript。你應該使用一種我們稱爲「token」的特定類型的ID,它是一個擁有大量每個角色的密鑰,它可以防止用戶猜測其他用戶的令牌。

你有「uniquid」誰返回一個唯一的字符串,基於時間,它可以被猜到,但你可以用它來聲明你的令牌的唯一性。您可以添加信息,例如用戶標識,名稱,隨機字符串,可能是某種鹽,然後對其進行哈希處理。

可以使用雜湊函數 http://php.net/manual/en/function.hash.php

或mcrypt的(你最好使用這一個): http://php.net/manual/en/book.mcrypt.php