【问题标题】:How do I prevent jQuery calls from console for my SignalR Chat?如何防止从控制台对我的 SignalR Chat 进行 jQuery 调用?
【发布时间】:2015-10-15 19:08:50
【问题描述】:

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

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

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

我想阻止这些类型的操作。我记得不久前 Facebook 出于“安全”目的实际上禁用了控制台窗口。我什至找到了several{1}resources{2},它详细说明了这是如何完成的,并在 Chrome 拥有 fixed 后试图进一步阻止控制台使用。

但是,这些选项都不再起作用,而且由于浏览器不断变化,我不想尝试在此级别进行阻止。

我想知道 Stack 上是否有人知道防止此类攻击的更好方法?有什么好方法可以检查电话的来源吗? SignalR 是否有防止这种情况的好方法?想法/讨论肯定会受到欢迎。

【问题讨论】:

  • 使用 ASP.NET 安全并从当前 Principal 获取用户名

标签: javascript c# jquery signalr chat


【解决方案1】:

尝试像这样锁定客户端可能会很好地防止非技术用户弄乱您的应用程序,但对于知识渊博且足智多谋的对手几乎无济于事。此类安全措施有意义的情况相当有限,当然不包括任何人都可以从 Internet 访问的任何应用程序。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-07
    • 2021-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多