如何确保只有您的javascript才能连接到您的Web服务器
How to ensure only your javascript can connect to your webserver
我们正在考虑将.NET中的一些工具转换为具有web服务风格后端的HTML5。后端本身将完全自定义运行在实现WebSockets的嵌入式硬件上,这意味着我们可以完全控制。
我遇到的问题是,一半的代码将用连接到后端的JavaScript编写。理想情况下,我们希望确保只有"我们"才能做到这一点。我指的是我们页面中托管的JavaScript(从同一个嵌入式Web服务器提供)。
是否有可能阻止任何第三方,或者更具体地说,阻止任何不在我们盒子上的代码调用web服务?
我有一些想法,没有一个是万无一失的,有各种缺点:
- 确保每个连接的引用地址都是web服务器的引用地址
- 当页面被提供时,在JS中嵌入一个"种子",JS用来连接到web服务器,就像临时通行证一样。只有具有正确种子的请求才会得到服务
任何关于如何实现这一目标的想法都将是伟大的。我意识到我可能没有一个万无一失的系统,但"接近"的系统是可以接受的。
您试图阻止的被称为CSRF-跨站点请求伪造。
您的第二个想法是,要求客户端在请求标头中提供只有您的web服务器才能生成的令牌,这是抵御此类攻击的常见保护措施。
您永远无法知道哪个代码或是从哪里调用您的web服务的-您只收到一个web请求。一切都可以被欺骗。
因此,您需要一些身份验证系统,以便客户能够证明其使用该服务的权利。一个肯定不会公开的"种子"可能会公开。
相关文章:
- 服务器上的Meteor客户端断开连接事件
- 可以't连接客户端和服务器import.io
- SignalR连接到多个服务器
- Javascript/web-dev:为什么你需要一个服务器来连接硬件
- 将服务器托管的Web应用程序连接到本地Web套接字
- 如何将我的Ionic应用程序与我的java服务器(Spring MVC)连接
- 如何确保只有您的javascript才能连接到您的Web服务器
- 在 Joomla 3.3.6 中,单击会导致服务器连接重置
- 如何增加节点中与 Whois 服务器的最大连接数
- 套接字发生了什么's在'断开连接'事件(服务器端)
- 流星安卓应用赢得't连接到服务器
- 如何将sql服务器连接到我的Javascript游戏
- 如何从适用于 Chrome 应用的 GCM 连接服务器获取注册令牌
- Socket.io脱机连接服务器
- 配置Grunt连接服务器的别名目录
- 让grunt's连接服务器以接受静态文件上的POST请求
- 如何在连接服务器客户端之前获得IP地址(使用websockets/ws)
- 日志含义连接服务器失败.(file:///android_asset/www/index.html)
- 如何获取连接服务器的主机名和端口号
- 在heroku上使用grunt连接服务器时出现问题