之前在web项目里使用, 限制客户端的链接是通过域名限制的方式. 现在我如果要在electron项目里使用, 是没有域名的, 我要让electron项目可以作为客户端, 怎么做到只给electron使用呢?
看下 electron 连接的时候有没有什么特殊的http头,用那个头来判断。 不过不管怎么做,客户端http头都是可以伪造的,无法做到100%限制。
那请问如果要限制, 只能我信得过的客户端连接, 有这方面的方案吗?
自定义请求头,请求头可以传一个自定义加密规则的 token 过来,后端判断 token 是否合法,合法才允许后续操作
我有一个疑问, 就是websocket的客户端是在页面里通过js方式连接的socket服务端, 那么传入的东西都是明文显示在页面源代码里的, 这样别人照样传入这个token不就行了吗?即使加上过期时间, 别人也可以通过定时请求页面获得最新的token. 不知道我的理解是不是对的?
@3841:你不是都用 eletron 了么?这就不是明文了吧,eletron 不是将你的 h5 都打包到可执行文件中了么?刚刚再细看了下,感觉你的 web 项目有些奇怪啊,控制域名。。。域名是你的,每个人当然都访问你那唯一的域名,你怎么限制的客户端。。。你确定能限制?如果你只是给 app 提供 api 就可以,当然别人反编译你的 app 也是可以伪造的,只是难度的问题。如果有 pc 端网页浏览之类的还是算了吧
是这样的, 我使用的是web-msg-sender, 推送信息到网页, 现在的情况是如果不限制域名, 任何人只要知道我的websocket服务地址, 就可以直接用socketio.js 在任意网页中接收到我推送出去的消息. 所以在之前的web端项目里,我是限制了域名来处理的.
@WilliamA 的方法可以。 每个用户token不一样就行了,比如 $token=md5($username . '@#$9shnF(@)'); ,'@#$9shnF(@)'是保密的,这样其他人猜不出来token,服务端验证token的合法性就ok了。除了$token,还要用wss,这样数据传输是加密的,其他人无法抓包获取到token。
看下 electron 连接的时候有没有什么特殊的http头,用那个头来判断。
不过不管怎么做,客户端http头都是可以伪造的,无法做到100%限制。
那请问如果要限制, 只能我信得过的客户端连接, 有这方面的方案吗?
自定义请求头,请求头可以传一个自定义加密规则的 token
过来,后端判断 token 是否合法,合法才允许后续操作
我有一个疑问, 就是websocket的客户端是在页面里通过js方式连接的socket服务端, 那么传入的东西都是明文显示在页面源代码里的, 这样别人照样传入这个token不就行了吗?即使加上过期时间, 别人也可以通过定时请求页面获得最新的token. 不知道我的理解是不是对的?
@3841:你不是都用 eletron 了么?这就不是明文了吧,eletron 不是将你的 h5 都打包到可执行文件中了么?刚刚再细看了下,感觉你的 web 项目有些奇怪啊,控制域名。。。域名是你的,每个人当然都访问你那唯一的域名,你怎么限制的客户端。。。你确定能限制?如果你只是给 app 提供 api 就可以,当然别人反编译你的 app 也是可以伪造的,只是难度的问题。如果有 pc 端网页浏览之类的还是算了吧
是这样的, 我使用的是web-msg-sender, 推送信息到网页, 现在的情况是如果不限制域名, 任何人只要知道我的websocket服务地址, 就可以直接用socketio.js 在任意网页中接收到我推送出去的消息. 所以在之前的web端项目里,我是限制了域名来处理的.
@WilliamA 的方法可以。
每个用户token不一样就行了,比如 $token=md5($username . '@#$9shnF(@)'); ,'@#$9shnF(@)'是保密的,这样其他人猜不出来token,服务端验证token的合法性就ok了。除了$token,还要用wss,这样数据传输是加密的,其他人无法抓包获取到token。