如何确保只有您的javascript可以连接到您的网络服务器

时间:2012-08-21 13:55:25

标签: javascript web-services obfuscation

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

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

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

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

  • 确保每个连接的引荐来源地址是Web服务器的地址
  • 当页面被提供时,将一个“种子”嵌入到JS用于连接到Web服务器的JS中,就像临时传递令牌一样。只有具有正确种子的请求才会得到服务。

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

您永远不会知道从哪个调用您的Web服务 - 您只收到一个Web请求。一切都可以被欺骗。

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