2

我们正在考虑将一些工具从 .NET 转换为带有 Web 服务风格后端的 HTML5。后端本身将完全自定义运行在实现 WebSockets 的嵌入式硬件上,这意味着我们可以完全控制。

我遇到的问题是一半的代码将用连接到后端的 JavaScript 编写。理想情况下,我们希望确保除了“我们”之外没有其他人可以做到这一点。我们指的是托管在我们页面中的 JavaScript(由同一个嵌入式网络服务器提供)。

是否有可能阻止任何第三方,或者更具体地说,任何不在我们盒子上的代码调用 Web 服务?

我有一些想法,没有万无一失的各种缺点:

  • 确保每个连接的引用地址是 Web 服务器的地址
  • 提供页面时,将“种子”嵌入到 JS 中,JS 使用该“种子”连接到 Web 服务器,就像临时通行证一样。只有具有正确种子的请求才会得到服务。

关于如何实现这一点的任何想法都会很棒。我意识到我可能不会得到一个万无一失的系统,但“接近”的东西是可以接受的。

4

2 回答 2

1

您要防止的是CSRF - Cross-site Request Forgery

您的第二个想法 - 要求客户端在请求标头中提供只有您的 Web 服务器可能产生的令牌,这是针对此类攻击的常见保护措施。

于 2012-08-21T13:59:01.203 回答
0

你永远无法知道你的 web 服务是从哪里调用的代码从哪里调用的——你只会收到一个 web 请求。一切都可以被欺骗。

因此,您将需要一些身份验证系统,客户可以在其中证明其使用服务的权利。一个肯定不会公开的“种子”可能会这样做。

于 2012-08-21T14:07:08.013 回答