我们是在写一个原生的Windows应用程序(MFC)将要一些数据上传到我们的Web应用程序的过程。 Windows应用程序将允许用户登录之后,它会有些数据定期上传到我们的Web应用程序。上传将通过简单的HTTP POST来完成我们的Web应用程序。我有令人担忧的是,我们如何能确保上传实际上是从我们的应用程序来的,而不是从卷曲或类似的东西。我想我们正在寻找某种公共/私人密钥加密这里。但我不知道,如果我们能以某种方式只是嵌入在我们取胜的应用程序的可执行公共密钥,并用它来完成。还是那样的公钥是太容易了我们的应用程序的提取和使用外?

总之,我们建立双方(客户端和服务器),因此相当多的东西是一种选择,但它通过HTTP(S)的工作。但是,我们不控制双赢(客户端)应用程序的执行环境,再加上运行应用程序他/她的系统上是唯一一个代表由游戏系统有所收获的用户。

有帮助吗?

解决方案

归根结底,这是不可能的,以证明申请者的身份时,这是你没有自己的机器上运行这种方式。你可以嵌入键,播放与哈希和校验,但在一天结束的时候,任何依赖别人的机器上运行的代码可以伪造。密钥可以被提取,代码可以是反向engineered-它的所有安全通过隐藏。

花时间工作的验证和数据清理,如果你真的想保护的东西,确保与客户端证书的最终用户。别的只是浪费时间和安全的错觉。

其他提示

关于你可以做的是使用HTTPS与客户证书是最好的。推测可能与 WinHTTP的的接口。

  

但我不知道,如果我们能以某种方式只是在我们的赢的应用程序的可执行嵌入一个公共密钥,并用它做。

如果客户端被识别自身到服务器,它必须是私钥嵌入。

  

还是那样太容易我们的应用程序的提取和使用外?

如果你不控制客户端应用程序的执行环境,什么你的应用程序可以做,可以分析,自动化和攻击者,做控制再现了环境。

您可以把混淆层周围的通信过程,如果你一定要,但你永远不会解决问题。多人游戏一直在努力多年打击作弊做到这一点,但最终它只是一个模糊军备竞赛永远不能获胜。暴雪有这样的资源超过你,他们也不能管理它。

您必须在二进制文件没有控制,一旦发布应用。如果所有的签名和加密逻辑驻留在你的可执行文件就可以提取。聪明的程序员会找出代码,并建立可互操作的系统时,有足够的动机这样做。这就是为什么DRM不起作用。

一个复杂的系统捆扎一键例如是PC的MAC地址是一定要失败。

不信任特定的可执行文件或系统,而是信任你的用户。委托他们每个人通过密码保护和私人密钥文件向他们解释,关键是如何将其识别为您服务的内容提交者。

既然你控制客户端,你还不如嵌入到应用的关键,并确保用户不必对应用程序的图像读取访问 - 你需要的逻辑分离到2层 - 1,用户运行时,其他连接到该服务通过HTTP(S) - 。由于用户将总是具有读访问应用程序他正在

如果正确地明白,数据会自动在用户登录后发送 - 这听起来像仅需要服务部分

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top