0

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

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

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

4

1 回答 1

1

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

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

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

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

于 2015-06-22T01:26:42.733 回答