Laravel:当使用Brain Socket时如何在JS中隐藏/使用户id不可编辑


Laravel: How to hide/make user id uneditable in JS when using Brain Socket

我有一个通用的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