我正在寻找围绕选项的输入,以实现SignalR传输的数据的签名/加密。由于我们无法控制的部署环境,SSL可能不适合我们。
在SignalR框架内建议的方法是什么?
我们知道可以构建可以注入进程的HubPipelineModule,但是该模块似乎无法访问传入的请求流。
我们可以在传递给SignalR之前对数据进行加密或签名,并将加密数据(或纯文本加HMAC)作为字符串参数传递给服务器,但如果我们可以利用管道模型来处理它,我觉得它会更干净在框架内部。
有什么建议吗?我们是否正在为此目的寻找自定义JSON反序列化器?
此外,我们的客户最初是.NET,所以我们也会寻找一个干净的实现客户端。
非常感谢
西蒙
答案 0 :(得分:1)
考虑到SignalR works with SSL,您应该考虑是否值得花时间来推广自己的解决方案。如果数据值得保护,您应该能够证明SSL证书的费用。还要考虑让用户创建自己的证书并将其推送到用户的计算机的可能性。
如果您尝试实施自己的加密和身份验证,您会发现必须解决SSL为您解决的许多相同问题,并且这些问题并不容易。最重要的是:客户端和服务器如何就加密和身份验证密钥达成一致意见1)窃听者无法读取它们; 2)客户端可以确信它实际上是与服务器通信而不是恶意模仿者。
如果您还希望在浏览器中执行此操作:通过非SSL连接提供的任何javascript都可以由活跃的攻击者修改,这几乎可以解决任何可能在理论上有效的解决方案的实现。