【问题标题】:Protecting server data sent over network保护通过网络发送的服务器数据
【发布时间】:2014-04-19 16:22:20
【问题描述】:

我有两个应用程序:

  • 提供用户友好界面的客户端
  • 负责处理客户端所有实际功能的服务器。

使用我的应用程序的人显然使用客户端,而服务器应用程序驻留在服务器计算机上,两个应用程序使用 TCP 进行通信。

我的客户端应用程序中有一些高级功能,只有通过登录支付月费才能使用。

现在,我的问题如下: 我怎样才能防止一个人下载客户端应用程序,支付一个月的费用只是为了检查服务器发送给客户端的 TCP 数据包,然后创建他们自己的应用程序来一遍又一遍地将该响应发送给客户端以绕过登录?

有什么方法可以防止服务器发送给客户端的数据被运行客户端的人读取?某种加密?

【问题讨论】:

  • 您是否使用了任何类型的加密技术?
  • 还没有.. 我应该吗?我以为加密只是用来阻止窃听。
  • 我认为这对您的情况会有所帮助。未经授权的人不会知道加密技术或解密它的密钥。所以他将无法正确生成响应。
  • 但是如果客户端必须解密它..发送用户确实有权访问的加密数据仍然会变成同样的权利吗?客户端只会将其解密并将其作为有效的登录响应读取。

标签: c# networking encryption client-server protection


【解决方案1】:

您需要的是身份验证和授权。用户必须使用密码或类似的东西登录以证明其身份,然后您可以决定用户是否支付了费用并因此被授权使用高级功能。如果请求来自未经授权的用户,则只需以错误响应。加密并不是真正需要的,但加密所有流量显然是一个好主意,特别是因为您还传输身份验证信息。最简单的解决方案是只使用 TLS。

【讨论】:

  • 客户端如何知道登录响应未授权?我的意思是..这是来自服务器的响应(这就是客户端的想法)毕竟..我应该让我的客户端不信任服务器吗?
  • 我认为高级功能依赖于某些服务器功能 - 在这种情况下,服务器拒绝发挥作用就足够了。这个假设是错误的吗?
  • 既然你这么说,我觉得我很愚蠢......我可以像你说的那样拒绝客户端在服务器上的请求......谢谢:)
  • 问题是,您对客户端上发生的事情的控制为零。用户总是可以只是反编译、修改和重新编译客户端,你只能让这是一件不愉快的事情而不是阻止它。或者,理论上用户可以只开发一个替代客户端,然后您就失去了任何控制权。在服务器上无法阻止的事情根本无法阻止,至少几乎总是如此。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-15
  • 2011-03-31
  • 1970-01-01
相关资源
最近更新 更多