【问题标题】:two way security (multi-protocol)双向安全(多协议)
【发布时间】:2015-06-21 11:19:46
【问题描述】:

我正在实现一个一对多的多协议服务器(+ 客户端),我想添加 2 路安全性。这是我想要完成的:

  1. 客户端和服务器都以安全的方式相互验证。客户端不涉及人工交互。
  2. 客户端的代码校验和在服务器上进行验证。
  3. 客户端的代码可能是用解释性语言(如 python 或 javascript)编写的,所以我想防止在有人获得对客户端的访问权限后破坏网络的可能性(尽管这可能是矫枉过正,因为我的客户端不会在服务器上执行任何操作,只是报告其操作的结果)

我应该如何设计身份验证流程?我应该使用/google 哪些技术,或者 - 在较低级别上 - 我可以尝试哪些现有解决方案? (我的原型是用node.js写的)

【问题讨论】:

  • 服务器如何获取客户端代码校验和呢?
  • 在您的情况下,客户端不仅是浏览器,还可以用其他一些服务器端脚本编写?
  • 是的,没有浏览器。 server 是 node.js,client 可以用 node.js 或者别的写,但首先我会从 node 开始

标签: node.js security mutual-authentication


【解决方案1】:

SSL 可以通过两种方式进行身份验证。开箱即用,没有什么特别需要的。甚至可以免费获得证书(自签名或来自公认的 CA)。

如果需要,可以使用客户端证书来区分客户端,类似地,它们可以用于防止同时登录的客户端的副本。

您根本不能做的是阻止聪明的恶意用户以这样的方式控制客户端,即他们对客户端与服务器的交互方式进行逆向工程,而不是运行您的预期客户端,而是运行他们自己的客户端,仍然像它一样运行是真正的客户,但不是。

无法信任客户端的解决方案是不要让它做您必须信任的事情,因为它会在未更改的情况下运行您的代码。这通常意味着从 2 层模型(重型客户端 - 服务器)迁移到 3 层模型,其中您要运行的代码保存在您控制的硬件上,并且只有(不受信任的)用户接口被推送到用户控制的硬件.

【讨论】:

    猜你喜欢
    • 2017-03-08
    • 1970-01-01
    • 2021-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-02
    相关资源
    最近更新 更多