SignalR - 如何保护客户端以确保用户不会创建自己的客户端

SignalR - how to secure client to make sure that the user doesn't create his own client

我目前正在开发一些基于 rest api/signalr (C#/.Net Core) 的应用程序后端。两种协议都是开放的 - 我如何确保后端仅与授权应用程序一起工作并阻止创建未经授权的客户端的可能性?

你不能。您必须始终假定客户端是敌对的,但是 尤其是 基于 HTTP 的技术如此。无论您尝试在客户端中放入什么证据,通常 都可以被有适当动机的恶意方提取并用于他们被黑的敌对客户端。或者更有可能:他们可以只使用浏览器工具或 Fiddler 等工具来查看、操作和重播命令。

所有逻辑都必须在服务器上。如果客户端想要复制逻辑以获得更好的用户体验,那很好:但是您不能相信客户端做出的任何裁决 - 服务器必须重新检查。

这取决于您想要锁定对后端的访问的认真程度。但总的来说,解决信任问题从来都不便宜。

  • 调查 SSL Pinning 和证书透明度等问题,这是一个好的开始但并非万无一失
  • 接下来查看 API 管理网关 (APIM),它可以放在 API 的前面来管理访问。这通常通过为客户提供访问令牌来实现。但是这个令牌可能会受到损害。更好的方法是通过用户特定访问令牌控制的网关访问 API。但这并不总是实用的。
  • 如果这不符合您的访问控制要求,则您需要添加 Web 应用程序防火墙(有时称为 WAF),它可以监控、过滤和阻止不需要的流量

无论您采取何种方法,通常您想要将其锁定的程度与您需要投资的金额成正比。