2

我看到的问题几乎与这个问题相同,除了我想详细说明的细微但重要的差异。

假设我在 MVC 中有一个控制器和一个操作方法,因此它接受以下 URL 上的请求:http ://example.com/api/myapimethod?data=some-data-here 。

然后,这个 URL 会被 1000 个或更多分布在公众中的客户定期调用。原因是众包。全球的客户端帮助在我的服务器上提供全局缓存,这使得其他客户端更快地获取数据。

现在,如果我偷偷摸摸(我是),我可以进入 Fiddler、Ethereal、Wireshark 或任何其他数据包嗅探工具,并找出程序正在发出哪些请求。

通过弄清楚这一点,我还可以复制它们,并用错误的损坏数据填充服务。

确保在我的 ASP .NET MVC 操作方法中接收到的数据实际上来自桌面客户端应用程序,而不是用户发明的一些错误生成的数据的最佳方法是什么?

由于这一切都是基于众包,如果某些数据被伪造,我的用户能够“投票”,然后如果有足够的选票开始自动清理,这会是一个好主意吗?

我无法使用 SmartAssembly 之类的工具,所以很遗憾我的 .NET 程序是完全可反编译的。我意识到这可能无法以防错的方式完成,但我想知道我的最佳机会在哪里。

4

3 回答 3

1

任何解决方案最终都是不可靠的,因此您必须有效地将密钥提供给最终用户才能使用系统。

拥有一个用户可以投票否决不良内容的系统是最好的,但是您需要一个信誉系统或某种信任机制,以便您的用户可以分辨出不良数据是不良数据,因为它来自不受信任的来源。

SSL 只防御中间人攻击。

您花费多少时间来构建一个系统取决于它对您和您的用户有多重要以及有人攻击您的系统的可能性有多大

于 2012-09-03T15:48:09.850 回答
0

您在此处描述了几种方法:

http://codebetter.com/johnvpetersen/2012/04/02/making-your-asp-net-web-apis-secure/

1°) 使用 SSL (HTTPS) 2°) 使用私钥/公钥

于 2012-09-03T15:42:27.953 回答
0

没有办法。每次您允许代码在其他人具有管理权限的机器上运行时,您就将该系统上的安全功能委托给他们。

这意味着您必须能够识别用户并拥有滥用服务的惩罚系统。您还应该能够识别每个特定用户并能够断开他的连接。因此,这意味着创建用户帐户并分发密钥以使程序正常工作,对称或非对称,或者至少是授权 cookie。

于 2012-09-07T09:36:21.917 回答