我期待实现web (角)和iPhone应用程序使用WebSockets与我们的服务器通信。在过去,使用HTTP请求,我们使用散列使用请求数据、url、时间戳等来验证和保护请求。
据我所知,我们无法发送带有WebSockets请求的头,因此我想知道如何确保每个请求的安全。
有人有什么想法或好的做法吗?
发布于 2015-10-04 12:45:31
与服务器进行安全通信包括相互对双方进行身份验证。如果您需要通过一个通信通道来引导具有不同身份验证凭据的不同用户(这在当今是很少见的),那么您将需要单独的身份验证。否则,你只需要想出一个密钥分配方案(这样你的应用程序就可以知道你服务器的公钥,而你的服务器也有一个协议,你的客户端的公钥被释放了,这有很多种模式)。
为此,有一个比SSL或您自己的密码更宽的选择梯度(尽量避免不惜任何代价编写自己的密码)。
对于栈中的and服务器到浏览器部分,SSL是您唯一的选择,但是它不应该被认为是一种很好的安全措施,每年都会出现越来越多的漏洞、密码退化情况和信任问题。它背负着20年来糟糕的工程决策和紧急修复的包袱,所以如果你能得到更好的东西--这是值得的。尽管如此,对于普通的网络来说,这总比没有好得多。
在您的移动应用程序中,您可以很容易地使用多个加密库中的一个来提供与服务器的安全会话消息传递,这些服务器具有更高的安全性保证,无需依赖:
发布于 2015-09-16 22:12:39
要保护您的消息,请使用SSL/TLS上的WebSockets (wss://而不是ws://)。别乱翻你自己的密码。
关于认证。HTTP与WebSockets的最大区别在于HTTP是无状态协议,而WebSockets不是无状态协议。
使用HTTP,您必须在每个请求中发送头(cookie、令牌等)。使用WebSockets可以建立一个连接。在第一次交互中,您可以对客户端进行身份验证,对于您所知道的连接的其余部分,您知道客户机是经过身份验证的。
Heroku的人员描述了一种模式,客户端使用HTTP进行身份验证,获取票证,然后通过WebSocket连接将该票证作为第一条消息发送。请参阅https://devcenter.heroku.com/articles/websocket-security
发布于 2015-09-20 23:36:03
我同意SSL/TLS wss:// connection。始终使用加密的通信量。有几种实现身份验证的方法。见此处:http://simplyautomationized.blogspot.com/2015/09/5-ways-to-secure-websocket-rpi.html
对于所有的例子,大多数都使用python或nodejs,并且是针对Raspberry Pi的,但是一般的概念是值得考虑的好主意。post中有指向SocketRocket助手库的链接,允许您将身份验证插入到auth标头(SocketShuttle)中。
https://stackoverflow.com/questions/31564432
复制相似问题