【问题标题】:How to secure socket.io from code injection?如何保护 socket.io 免受代码注入?
【发布时间】:2013-03-12 17:14:50
【问题描述】:

所以我正在开发一个 socket.io 实时网络应用程序。 我首先担心的是“如果某个心怀恶意的用户试图通过 Dev Tools 或 Firebug 注入一些代码怎么办?”我在这里得到了我的答案。我的下一个担忧是:“如果某个心怀恶意的用户试图通过聊天和/或其他形式的字符串输入注入一些代码怎么办?”我得出的结论是我自己无法解决这个问题。我知道我可以使用正则表达式来查找用户是否正在尝试注入代码,但是一旦代码被发送到服务器并存储到一个字符串中,它就会被执行。 (例如:var data = " *asd "; while(1);* "; [ 其中用户发送的字符串是 * ] 之间的字符串)。所以我的问题是:我怎样才能防止这种情况发生?换句话说我如何清理用户输入?

【问题讨论】:

  • 您必须将所有用户输入视为字符串
  • 你这是什么意思?我确实将所有用户输入视为字符串。对不起,我似乎不明白你的意思。
  • 如果输入始终被视为字符串,则用户输入while(1); 所发生的一切就是聊天中的其他用户将看到while(1);
  • 是的,我知道。但这和 XSS 中的问题不一样吗?如果他输入 " 他不是结束字符串吗?我很困惑服务器如何处理它。
  • 你可以在Node中完成

标签: javascript node.js socket.io serverside-javascript


【解决方案1】:

您可以使用encodeURIComponent(userstring);对用户输入进行编码

例子:

var userData = encodeURIComponent(" *asd "; while(1);* ");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-03
    • 2010-12-24
    • 1970-01-01
    • 2021-03-19
    • 2013-02-19
    • 1970-01-01
    • 2020-05-06
    相关资源
    最近更新 更多