【发布时间】:2011-09-15 07:43:12
【问题描述】:
假设我构建了一个 Web 服务,以及一个调用该 Web 服务的客户端应用程序。
有什么办法可以阻止我以外的其他软件调用网络服务?
例如,想象一个游戏,玩家可以通过点击一个图标来获得一些钱,该图标每小时只能使用一次。如果用户已连接,那么。如果用户没有连接,他会“松开”时间窗口来获取资金。
在标准的 Web 服务 + 客户端中,任何青少年都可以轻松构建脚本/假应用程序来执行 Web 服务。
我怎样才能避免这种情况? 我知道没有神奇的解决方案,但至少,我怎样才能提高编写此类工具的难度?
PS:我正在使用 Microsoft .Net 平台 + SilverLigth,但我觉得这个问题比 MS 技术更广泛。
[编辑]澄清一下,我不问如何添加身份验证,而是问如何避免用户自动调用 Web 服务。没有什么可以阻止拥有帐户的用户使用其帐户来自动执行呼叫;例如,我想要避免的是拥有一个具有实际身份验证的假应用程序,而不是每 5 秒执行一次用户输入。在游戏中,这样可以避开农夫机器人
【问题讨论】:
-
这是一个身份验证问题 - 您需要向 Web 服务验证您的 应用程序。
-
@John Saunders:不,这不是身份验证问题。我假设黑客可以简单地注册一个帐户及其用户/密码
-
@Steve:身份验证并不意味着用户名/密码。我的意思是您的应用程序本身需要与服务建立身份,可能使用证书。
-
@John Saunders:什么可以阻止黑客重复使用他在注册时获得的证书?
-
@John Saunders:对我来说,证书有两个目的。要么通过交换会话密钥来保护通信通道(这不会阻止黑客打开自己的会话),要么是身份验证机制的一部分。在这种情况下,无论是哪个客户端,都必须拥有私钥......对吗?你告诉我在应用程序中嵌入证书的私钥。我仍然相信黑客可以反编译应用程序以提取私钥,然后游戏就结束了。还是我错过了证书的其他用途?
标签: .net silverlight web-services security robot