如何阻止来自控制台的jQuery调用以进行SignalR聊天?

时间:2015-10-15 19:08:51

标签: javascript c# jquery signalr chat

我有一个SignalR聊天网站,它适用于学校项目(也使用C#)。从理论上讲,它适用于受信任的用户,但每个人都会证明 - 永远不要相信您的用户。我向我证明了这一点,因为我发送了链接给我的几个朋友,他们立刻试图打破它,哈哈。

我现在已正确清理所有输入,但他们仍然可以做的一件事是使用浏览器控制台工具手动调用发送消息所需的功能等。

示例:$.connection.chatHub.server.sendMessageToAll('FakeUser','FakeMsg',0);

我想阻止这些类型的操作。我记得有一段时间,Facebook实际上已经禁用了控制台窗口,以确保"安全"目的。我甚至找到了several{1} resources{2},其详细说明了这一点,并尝试在Chrome有fixed这一点后进一步阻止控制台使用。

然而,这些选项都不再适用,并且因为浏览器不断变化,我宁愿不尝试阻止这个级别。

我想知道Stack上是否有人知道防止这类攻击的更好方法?有没有一种好方法来检查来电的来源? SignalR有一个很好的方法来防止这种情况吗?肯定会欢迎创意/讨论。

1 个答案:

答案 0 :(得分:1)

试图像这样锁定客户端可能会相当好地防止非技术用户搞乱你的应用程序,但它会对知识渊博且足智多谋的对手毫无帮助。这些安全措施有意义的情况相当有限,当然也不包括互联网上每个人都可以访问的任何应用程序。

唯一安全的方法是众所周知且非常简单:服务器不信任客户端。然后,客户端尝试做什么并不重要,因为服务器将拒绝所有它认为无效的操作。

在您的示例中,服务器会为每个会话分配一个随机的不透明连接ID。如果客户端发送了有效ID作为其请求的一部分,则客户端只能说服服务器执行任何;然后,服务器不需要信任客户端的用户名,因为它已经知道每个用户登录的连接,并且在给定id时可以产生用户名。