用户可以访问我的网站并发送垃圾邮件 Socket.emit(something); 吗?或者对这种安全问题有保护吗?

Fel*_*iaz 1 security client node.js socket.io server

我正在使用 socket.io,客户端看起来像这样。

<script src="/socket.io/socket.io.js"></script>
<script>
    var socket = io();
    socket.emit("sendData", "hello!");
</script>
Run Code Online (Sandbox Code Playgroud)

我想知道是什么阻止了一个随机用户,加入我的网站,查看代码,然后使用 chromes 代码查看应用程序或类似的东西添加以下几行:

<script src="/socket.io/socket.io.js"></script>
<script>
    var socket = io();
    for(i = 0; i < 50; i++) {
        socket.emit("sendData", "hello!");
    }
</script>
Run Code Online (Sandbox Code Playgroud)

jfr*_*d00 5

是的,用户可以访问您的网站并执行此操作。

浏览器或 socket.io 中没有任何内容可以阻止用户执行您的建议。如果您想防止这种情况发生,则必须实施自己的保护措施。我不知道你真正想做什么,所以我只能提出广泛的建议,但这些是可以做的事情:

  1. 实施用户身份验证,以便只有经过确认的、经过身份验证的用户才能使用您的站点。
  2. 在您的服务器上实施速率限制,以便任何超过正常预期实际用户活动速率的用户都断开连接,如果滥用继续,甚至可能最终被禁止。
  3. 如果您想阻止机器人在您的网站上做事,请使用验证码等“真人检测”。或者也许只有当用户似乎做的比预期更多时才强制使用验证码(例如潜在的机器人)。
  4. 检测非原始的、重复的通信并禁止或阻止它(就像你展示的循环会做的那样)。