1

我有一个场景,用户通过 ASMX Webservice 将事务日志上传到主服务器。该应用程序是 clickonce .Net winforms 应用程序

目前我正在这样做将对象列表转换为 Json 并在服务上反序列化它。通过 SSL。

string data = JsonConvert.SerializeObject(Values_Static.logitems);

我的代码受 SmartAssembly 保护。而且我仍然得到一些漏洞,攻击者可以访问网络连接并可以对数据进行反序列化。

现在我在想一个场景,我用一些私有字符串密钥加密 Json 字符串,然后在服务器上解密它。

例如

private string salt = "$e7?8f@l4";
return ByteArrToString(Encrypt(TextValue + salt)); 

在应用程序中硬编码密钥并在服务器中对其进行解码。

它会起作用吗?用户每分钟将日志上传到服务器,每次上传可能有 20-30 个条目。是否有任何破坏数据或仍然黑客攻击的机会?

更新:根据下面的讨论。我了解我的代码存在一些问题。该代码正在接受无效的证书。我如何防止只接受来自我的 https:// Web 服务的有效证书。ATM上,每个人都可以通过开启HTTPS解密的fiddler看到代码。

我在我的 IIS 7 上安装了一个有效的证书。它工作正常,问题出在代码上。及其在 Visual Studio 中的标准自动生成的 Web 参考。

更新 2:最终结果是,Post 数据没有加密,它的纯 XML 并且可以被任何可以嗅探的软件读取,但是 GET 数据是安全的。我已经搜索了一下,没有找到一些有效的答案。

4

2 回答 2

1

你在使用 SSL 吗?如果是这样,任何应用程序级加密都是多余的。而且,密钥必须嵌入代码中,因此任何攻击者都可以读取。

于 2012-09-08T14:15:14.643 回答
0

Fiddler(或其他 HTTPS 代理)可以解密任何HTTPS 流量。

您可以通过在客户端代码中要求特定的服务器证书(而不是信任系统本身信任的任何证书)来阻止简单地使用 Fiddler。然而,这只是一个微弱的威慑,因为用户可以反编译您的代码并对其进行更改,以便您的新证书检查被绝育。

这被称为“不受信任的客户端”问题,这与使数字版权管理 (DRM) 软件成为“尽力而为”的事情而不是铁定的保护是一样的。

于 2012-11-29T23:25:07.727 回答