【发布时间】:2014-04-22 03:39:33
【问题描述】:
最近,我们开发了一个应用程序,我们希望它的用户按月付费才能使用它。因此,我们首先想到的是如何为我们的应用程序实施一种安全的方式来检查用户的有效性,然后这些想法就出现了
- 使用
WebClient进入我们的网站和Login使用用户 提供的凭据:但是,这可能容易受到MITM的攻击 攻击。 - 使用第一种方法但使用
SSL证书(以确保 我们正在连接到我们的服务器而不是攻击者): 但是,Fiddler可以轻松进行MITM攻击并解密SSL通信,这将导致与 第一种方法。
由于互联网缺乏我们需要什么的文档,我们不得不在这里请人解释我们如何确保:
- 我们的应用程序
only连接到我们的服务器,而不是任何虚假托管 服务器(由攻击者)。 - 通信是安全的。没有改变或编辑一些如何为了 严重不公平地访问我们的应用程序。 (通过发送虚假响应 到应用程序或在应用程序接收之前编辑原始响应)。
Note: we totally understand that the attacker may just deobfuscate the application and do whatever he want to it. So we are planning to get a goodobfuscatorin order to at least make it harder for the attacker to do so.
【问题讨论】:
-
“Fiddler 可以轻松地进行 MITM 攻击”...不,它不能。用户必须明确批准提琴手根证书为受信任,并且有大而胖的警告标志告诉他们这是一个非常糟糕的主意。
-
@spender:没关系;用户是这里的敌人。
-
确实如此。我的偏好是将黄金保留在服务器上。客户本质上是不可信的。让用户为数据访问付费,而不是为应用本身付费。
-
@spender:问题在于应用程序并非设计为依赖于服务器。这就是为什么我们试图至少实现一个安全的登录系统。
-
@spender 还会创建一个处理某些功能的套接字服务器(使应用程序依赖于我们的服务器)是否容易受到 MATM 之类的攻击?