【发布时间】:2018-04-19 19:49:27
【问题描述】:
我对服务器-客户端模型的安全性有以下担忧...
想象一下:
我有一个想要与服务器通信的 C# WinForms 客户端(在 Mono 下的 Debian 上运行的控制台应用程序 C#(网络框架)中的 PHP GET-POST 请求、套接字或 WebSocket,而不是使用 ASP.NET)。
出现的第一个问题是服务器(用 PHP 或 C# 编写)是否必须对客户端生成的匿名请求进行某种控制,为此,我们将不得不使用由服务器处理每个请求。
问题与令牌无关(我的计划是在网络级别使用 HTTPS (PHP) 或 SSL / TLS + WebSockets (C#) 中的证书进行客户端-服务器通信,以避免欺骗或 MitM)。
当服务器必须向“客户端”(我们需要检查其有效性,这是主要关注点)提供一个令牌以允许客户端执行请求时,就会出现问题。任何客户端都可以很容易地从服务器提供令牌(如何?复制(反向工程化)客户端,该客户端向服务器发出请求以尝试获取有效令牌,至少,正如我计划实现的那样,因此需要帮助)。
在我的想法中,是为客户端的程序集文件生成一个 md5 或 sha 哈希。因此,如果有人试图复制这些步骤,那将是困难的。因为他/她将需要修改程序集的源代码或进行恶意程序集并通过碰撞获得相同的哈希(这很难)。
我不知道这个系统效率如何,所以在这方面我需要你指导一下。
我一直在看OAuth,我认为这种类型的实现不是我要寻找的,因为这种实现是针对用户级别的(避免另一个用户违反主要用户数据),不适用于客户端(应用程序)。
因此,如果有人可以在此问题上提供指导,那将有很大帮助。
【问题讨论】:
标签: c# security hash client-server verification