【问题标题】:Pubnub Auth Key and Auth Key Safety (Grant Token)Pubnub Auth Key 和 Auth Key Safety (Grant Token)
【发布时间】:2022-11-03 02:26:52
【问题描述】:

我一直呆在这里,找不到可靠的解决方案。

我在服务器端使用 PHP,在客户端使用 Vanilla JS。

在服务器端,我正在为当前登录用户的频道生成一个身份验证令牌 (https://www.pubnub.com/docs/general/basics/manage-access),以使他能够通过以下代码读取他的频道消息:

当密钥超时时,我也会生成一个新的,所以生成时一切正常。

但我的问题从这里开始:

我将密钥传递给客户端,如下所示:

并且用户正在访问该频道。但问题是,我正在将此身份验证密钥传递给客户端。获得此用户身份验证令牌的人是谁;可以设置自己的客户端并可以读取发送给该用户的消息。

我该如何处理?

还有一个:

我正在发布到这样的 PHP 频道。但是我可以在不设置身份验证令牌的情况下做到这一点。我确定身份验证令牌系统正在工作,因为当我将错误的身份验证密钥传递给客户端时,它会给出 403 禁止。但是,我可以在此处无需身份验证密钥的情况下发布到频道。这是因为它是服务器端的吗?

谢谢!

谷歌搜索一切...

【问题讨论】:

    标签: websocket pubnub


    【解决方案1】:

    获得此用户身份验证令牌的人;可以设置自己的客户端并可以读取发送给该用户的消息

    此授权策略与 JWT 相同。有人将如何获得此身份验证令牌?如果您使用与服务器的安全连接(TSL,又名 https),并且您的 PHP 服务器是安全的,那么您可以做的就是这些。这是互联网 :)

    现在最终用户的机器有多安全?他们是否容易受到网络钓鱼或其他可能允许黑客访问其计算机的计划的影响?人类是最容易被黑客入侵的东西,你真的无法做任何事情来保护他们;)

    因此,就 PubNub 的安全性而言,您所做的正是大型公司 10 多年来一直在使用 PubNub 所做的事情。问题是您的服务器有多安全,黑客无法访问您的代码和数据并获取您的 PubNub 密钥。在我在 PubNub 的 9 年多时间里,我从来不知道会发生这种情况。

    授予您频道的权限

    您授予了太多权限,但它没有任何负面影响。

    • read - subscribe(接收消息),fetch(来自历史的消息)和一些存在的东西(get/set statehere now
    • write - publish(发送消息)
    • getset - 这仅适用于与 pub/sub 不同的 PubNub Objects

    同样,授予对您授予的资源没有影响的权限不会造成任何伤害,但它会增加身份验证令牌的大小(在这种情况下只是一点点)。

    无需设置身份验证令牌即可做到这一点

    当您执行 setToken 时,您将在用于调用 PubNub 操作的 pubnub 对象上进行设置。 PubNUb SDK 会自动将身份验证令牌作为查询参数添加到请求中。所以它会自动为你传递。

    打开浏览器控制台,选择网络选项卡,然后查看任何 PubNub 请求/网址。您将看到查询参数名称 auth 并且值是您的身份验证令牌。

    PubNub 密钥为您提供所有访问权限

    secret key gives your server the ability to grant permissions (generate an auth token) AND it gives your server all access to all things in your PubNub key set。不要让那个密钥被泄露。

    【讨论】:

    • 谢谢!现在我知道了。我是套接字系统的新手,而且我是后端开发人员,所以如果密钥传递到客户端,我的天性就是害怕:) 正如你所说的那样;除非我网站的其他部分没有任何安全问题;一定没问题。 :) 关于我的最后一个问题:我问的是服务器端。在客户端操作的每个部分;是的。如果没有设置令牌,它将按预期进入 403 禁止。但;当我在服务器端(PHP)上发布时,我可以在不设置令牌的情况下做到这一点。如果在 pubnub 对象中设置了密钥,可能不需要令牌?
    • 因为您使用 pub/sub 和密钥初始化了 PubNub,所以您可以访问所有内容。不需要身份验证令牌。不要让那个密钥被泄露。密钥也使您能够授予权限,这是您知道的,因为这就是您首先要做的:)
    • 我更新了答案以解决密钥的使用问题。如果这回答了所有问题,请考虑给它一个“检查”和+1,这样每个看到这个的人都知道这是官方答案。
    猜你喜欢
    • 2018-05-11
    • 2018-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-19
    • 1970-01-01
    相关资源
    最近更新 更多