我有一个通用的used_id
,将用于脑插座(https://github.com/BrainBoxLabs/brain-socket)在Laravel这样:
window.userId = {{ $user->id }};
在接收通知、消息等时使用。问题是,因为它是JS, window.userId
可以在DOM中编辑(如使用firebug)。这样用户就可以从其他用户那里得到通知,这是不应该的。
对此有什么对策吗?(我使用Sentry Package获取用户id)
- 我一直在考虑为每个用户使用唯一的频道,而不是基于他们的ID,但这会是过度的吗?我还不知道在laravel怎么做?
你不能阻止用户编辑javascript。你应该使用一种特定的ID,我们称之为"令牌",它是一个包含很多字符的密钥,它可以防止用户猜测其他用户的令牌。
您有"uniquid",它返回一个基于时间的唯一字符串,它可以被猜测,但您可以使用它来断言您的令牌的唯一性。您可以添加信息,如用户id,名称,随机字符串,也许一些盐,然后散列它。
可以使用哈希函数http://php.net/manual/en/function.hash.php
或McRypt(你最好使用这个):http://php.net/manual/en/book.mcrypt.php