Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
确保我的C#桌面应用程序正在向我的ASP.NET MVC操作发出请求?_C#_Asp.net_Wpf_Asp.net Mvc_Security - Fatal编程技术网

确保我的C#桌面应用程序正在向我的ASP.NET MVC操作发出请求?

确保我的C#桌面应用程序正在向我的ASP.NET MVC操作发出请求?,c#,asp.net,wpf,asp.net-mvc,security,C#,Asp.net,Wpf,Asp.net Mvc,Security,我看到的问题几乎与这一个相同,除了我想详细说明的细微但重要的差异 假设我在MVC中有一个控制器和一个操作方法,因此它接受以下URL上的请求: 然后,1000个或更多分布在公众中的客户端会定期调用此URL。原因是众包。全球各地的客户机帮助在我的服务器上提供一个全局缓存,这使其他客户机更快地获取数据 现在,如果我偷偷摸摸(我也是),我可以进入Fiddler、Ethereal、Wireshark或任何其他包嗅探工具,找出程序发出的请求 通过弄清楚这一点,我还可以复制它们,并用错误的损坏数据填充服务 确

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

假设我在MVC中有一个控制器和一个操作方法,因此它接受以下URL上的请求:

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

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

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

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

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


我无法访问SmartAssembly之类的工具,因此不幸的是,我的.NET程序是完全可反编译的。我意识到这可能不可能以防错的方式完成,但我想知道我的最佳机会在哪里。

这里介绍了几种方法:

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

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

拥有一个用户可以投票否决不良内容的系统是最好的,但是你需要一个信誉系统或某种信任机制,这样你的用户就可以知道不良数据是不良数据,因为它来自不可信的来源

SSL只能防御中间人攻击


你花多少时间开发一个系统取决于它对你和你的用户有多重要,以及有人攻击你的系统的可能性有多大,这是不可能的。每次您允许代码在其他人具有管理权限的框上运行时,您都会将该系统上的安全功能委托给他们

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