html5 – Websocket服务器:如何授权客户端?

前端之家收集整理的这篇文章主要介绍了html5 – Websocket服务器:如何授权客户端?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我目前正在使用html5 canvas和websockets构建一个游戏网页.我有一个在服务器上运行的perl编写的websocket服务器:3000.在服务器上,我也安装了apache,并创建了一个用户可以访问的网站: http://server/.该页面上的javascript创建一个websocket到ws:// server:3000

连接工作,我可以从我的浏览器发送消息并获取响应,所有显示在一个div现在.我发送的消息现在只是“message:…”,所以服务器知道它是一条消息,并向当前连接到“游戏”的所有用户输出“…”.

现在的问题是任何人都可以编写自己的客户端,连接到ws:// server:3000并发送/接收相应的消息.这样他们会使用我的后端,但不是我的客户端(我希望他们只能从http://server/播放).

如何确保只有我的客户端被使用?主要关注的是作弊.您可以编写一个连接到端口的机器人,并通过发送消息并对其收到的消息进行播放…如何克服这个问题?

解决方法

我正在使用Jetty网络服务器.

我正在使用基本授权.我最初使用这个,因为它很容易实现.但是,在发现Websockets提出的授权问题后,我认为基本授权是一个很好的机制.

升级请求标头中的授权数据散列在其中:

Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-GB,en-US;q=0.8,en;q=0.6
Authorization:Basic YWRtaW46cm9vdA==
Cache-Control:no-cache
Connection:Upgrade

在我的websocket服务器中,每个OnMessage事件我调用

session.getUpgradeRequest().getUserPrincipal()

然后,我可以使用此信息来决定数据是否被授权进行处理.另外,我在OnConnect事件中检查套接字的原点:

session.getUpgradeRequest().getOrigin()

猜你在找的HTML5相关文章