【发布时间】: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