javascript - 如何防止从控制台对 SignalR 聊天进行 jQuery 调用?

标签 javascript c# jquery signalr chat

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

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

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

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

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

我想知道 Stack 上是否有人知道防止此类攻击的更好方法?有没有好的方法来检查调用来自哪里? SignalR 有没有好的方法来防止这种情况?想法/讨论肯定会受到欢迎。

最佳答案

尝试像这样锁定客户端可能可以很好地防止非技术用户干扰您的应用程序,但对于知识渊博且足智多谋的对手来说,它几乎没有任何作用。此类安全措施有意义的情况相当有限,当然不包括任何人都可以通过互联网访问的应用程序。

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

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

关于javascript - 如何防止从控制台对 SignalR 聊天进行 jQuery 调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33156555/

相关文章:

javascript - 如何在js中对数字进行四舍五入

javascript - 通过导航重定向后,React Router 不会加载新的页面组件

Javascript 或 Jquery - 在复选框单击时,如何更改父元素的背景颜色?

javascript - 如何将整个可见页面向下滚动到具有平滑效果的 anchor (Scriptaculous 或 jQuery)?

javascript - 如何在 slider 容器中安装元素

javascript - 每个 npm 安装都会发生此错误 : "npm ERR! Cannot read property ' resolve' of undefined. "

c# - ReferenceEquals 使用字符串返回 false

c# - Selenium Web Driver 点击

c# - 将 Paypal 与 wpf 应用程序中的链接集成

javascript - jquery和.js中根据屏幕尺寸显示不同的图像