【问题标题】:Websockets, socket.io, nodejs, and securityWebsockets、socket.io、nodejs 和安全性
【发布时间】:2011-09-15 19:06:31
【问题描述】:

我正在开发一个实时分析应用程序,并且正在使用 websockets(通过 socket.io 库)和 nodejs。不会有通过 websocket 发送的“敏感”数据(如姓名、地址等)。它将仅用于跟踪访问和跟踪总访问者(以及访问次数最多的前 10 个 URL 上的访问者数量)。

是否有任何我应该注意的安全问题?我是否敞开心扉:

  1. DoS 攻击?
  2. XSS 攻击?
  3. 可用于访问网络服务器/网络服务器的 LAN 的其他安全漏洞?
  4. 还有什么我没有在这里提到的吗?

谢谢!

【问题讨论】:

    标签: security html node.js websocket socket.io


    【解决方案1】:

    1. DoS attacks?

    您正在对 DoS 攻击敞开心扉,如果处理得当,您几乎无法应对此类攻击。

    2. XSS attacks?

    如果您不进行过滤,您很容易受到 XSS 攻击。我相信您可以使用类似 this 的东西来保护自己免受这种情况的影响:

    /**
     * Escape the given string of `html`.
     *
     * @param {String} html
     * @return {String}
     * @api private
     */
    
    function escape(html){
      return String(html)
        .replace(/&(?!\w+;)/g, '&')
        .replace(/</g, '&lt;')
        .replace(/>/g, '&gt;')
        .replace(/"/g, '&quot;');
    }
    
    3. Additional security holes that could be used to gain access to the
    webserver/webserver's LAN?
    

    您应该使用防火墙保护自己免受 LAN 攻击吗?

    4. Anything else I didn't mention here?

    • 如果您要发送敏感信息,您至少应该通过 SSL 发送。您还应该想出某种身份验证方案...
    • 也许您容易受到会话固定的影响?

    【讨论】:

    • 感谢您的反馈。我能问一下我究竟会如何让自己受到 DoS 攻击?我知道它们在很多情况下都是可能的,我只是担心使用 websocket 带来的额外风险。幸运的是,我只会将跟踪数据发送回来和第四次(可能是一个数字或某种动态计数器......我还没有考虑过)所以我认为我不必过滤东西。此外,用户将无法将数据输入到 websocket。 websocket 仅在用户加载页面时使用(用于跟踪)。
    • 当一个dos攻击被一个非常大的僵尸网络完美地执行时,你几乎无能为力。即使是大型网站,例如(我相信他们受到了打击)paypal、amazone 也无能为力。我不确定是否有任何额外的风险。如果输出(发送到浏览器)不是来自用户(确保丢弃用户的所有输入),您可以安全地抵御 XSS 攻击。
    • 再次感谢您的宝贵反馈 :)
    • 有一类 DoS 攻击会因糟糕的设计而加剧。如果相对较少的流量导致大量工作并且您变得受 cpu 或数据库 io 限制,那么您就有麻烦了。 http/tcp 过载是不可阻挡的......打电话给你的上游供应商;-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-16
    • 1970-01-01
    • 2018-01-16
    • 2015-07-11
    • 2018-12-17
    • 2015-08-14
    • 1970-01-01
    相关资源
    最近更新 更多