代码之家  ›  专栏  ›  技术社区  ›  Kurt

从python(或任何unix)客户机向beanstack添加身份验证

  •  0
  • Kurt  · 技术社区  · 15 年前

    所以我喜欢Beanstack:小,轻,有消息优先权,有大量的客户机,易于使用。

    我不喜欢beanstacked:缺乏身份验证威胁如果你可以连接到端口,你可以在其中插入消息。

    因此,我的想法是要么把它防火墙到可信系统(这是维护和应用程序外部的一种痛苦,需要添加另一层东西来完成),要么使用类似于 stunnel (在建立连接和其他方面会产生很大的开销)。我确实考虑过签名作业(作业字符串的MD5或SHA+时间值+附加到作业的秘密),但是如果攻击者向服务器大量发送伪造的作业,我仍然会遇到麻烦。 有人能想到其他方法来保护beanstack不被攻击者插入伪造的消息吗? 尤其是那些在计算或管理上不会产生大量开销的系统。

    3 回复  |  直到 11 年前
        1
  •  4
  •   Alister Bulman    15 年前

    我不得不不同意将连接无限期地保持打开的做法,因为我在各种事件中使用来自Web脚本语言(PHP)的beanstack。打开安全连接的开销是我必须仔细考虑的事情。

    与memcached一样,beanstack是为在防火墙后面的可信环境中使用而设计的。如果您不控制整个专用网络,那么限制对一组机器的访问(通过IP地址)将是一种典型的控制方法。放入一个安全散列表,然后丢弃无效的作业并不困难,而且要检查的工作量或开销很小,但不能阻止大量的作业被发送。

    要问的问题是“您的计算机可能被添加到(在给定范围之外的随机IP地址)的频率如何,以及本地网络上的第三方希望向队列中注入随机作业的可能性有多大?”第一部分是防火墙关闭机器需要做多少工作,第二部分是你到底需要做什么?

        2
  •  1
  •   Dustin    15 年前

    这个问题真的属于 beanstalkd talk list .

    我最近出于类似的原因向memcached添加了SASL支持。在实践中,开销几乎不相关,因为您只在连接时进行身份验证(并且您无限期地保持连接打开)。

    如果您需要身份验证,我建议您将它带到可能有人帮助您解决问题的地方。

        3
  •  0
  •   Gurunandan Bhat    15 年前

    我做了两件事来减少你提到的问题:

    首先,我总是在127.0.0.1上运行Beanstack

    其次,我通常序列化作业结构,并加载一个加密的base64摘要作为作业字符串。只有能够正确解密作业字符串的工作人员才能分析作业。

    我知道这是 当然不是 身份验证的替代。但我希望他们能在一定程度上减少劫持排队工作的人数。