用于Web服务安全性的SSL加密JSON字符串

时间:2012-09-08 14:11:01

标签: c# .net web-services ssl asmx

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

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

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

我的代码受SmartAssembly保护。而且我仍然遇到一些攻击者,他们可以访问网络连接并可以对数据进行分类。

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

e.g

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

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

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

更新: 根据下面的讨论。我知道我的代码存在一些问题。代码正在接受无效证书。我怎么能阻止我的https:// Web服务只接受有效证书。 ATM,每个人都可以通过带有解密HTTPS的提琴手看到代码。

我在IIS 7上安装了有效的证书,并且它正常工作 问题在于代码。及其在Visual Studio中的标准自动生成Web引用。

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

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

这称为"不受信任的客户"问题,使数字版权管理(DRM)软件成为最佳努力的同样的事情也是一样的。事情而不是铁定的保护。