17

我正在寻找一种简单的方法来加密我的 C# Web 服务中的肥皂通信。

我正在研究WSE 3.0,但微软似乎放弃了对它的支持,因此使用起来并不简单。
似乎 WCF 可能是一种选择,但我不想从 .NET 2.0 升级。

任何简单直接的加密方法?

4

6 回答 6

8

我认为这会有所帮助;去年我们用它来压缩 web 服务,它表现得非常好,我相信它可以通过加密类来增强;

创建自定义 SOAP 扩展 - 压缩扩展

于 2008-08-20T18:15:46.133 回答
2

您为提供不使用 SSL/TLS 的“加密”所做的任何事情都可能容易受到攻击。现在您必须问自己,是否值得花费您可以花费在橡胶鸡安全措施功能上的开发时间?也许是的。

DPAPI 和 Win32 crypt32 API 等 .NET API 使使用静态密钥加密数据块变得容易。但是您的客户将如何收到密钥?任何已安装的 SOAP 客户端都必须将密钥烧入其配置中,或者通过不安全的 Internet 接收它。

这是 SSL/TLS 为您解决的问题;你用 TLS 证书做的舞蹈是解决通过不受信任的渠道传递公钥的问题。

于 2008-09-11T03:01:05.930 回答
1

也许我很天真,但是强制通过 https 进行通信可以接受吗?我开发了在 2.0 上运行的 Web 服务,并且通过让 IIS 对虚拟目录强制执行 https 取得了成功。

这可能是最简单的方法,但不幸的是我无法控制 IIS 配置,也不能保证它可以运行 https。

在这种情况下,也许最好的办法是逐个加密部分 SOAP 消息(毕竟,您可能不需要加密整个消息 - 只需要加密某些敏感字段?),或者您可以选择使用一个 HttpModule 来拦截所有消息并对内容进行操作。无论哪种情况,您都可能必须提供自定义代理。

于 2008-08-20T18:06:20.307 回答
0

也许我很天真,但是强制通过 https 进行通信可以接受吗?我开发了在 2.0 上运行的 Web 服务,并且通过让 IIS 对虚拟目录强制执行 https 取得了成功。

或者,您可以检查HttpRequest.IsSecureConnection 属性

于 2008-08-20T17:58:43.740 回答
0

我们实际上在我们的 Web 服务中使用了 WSE 3.0,它最初是在 WCF 之前开发的。为了安全起见,我们使用基于 System.Security 中的 Cryptography 类的基于 SAML 令牌的系统。

它工作得很好。然而,这种方法绝不是“简单”的。

于 2008-08-20T18:18:38.530 回答
0

您可以使用 System.Security.Cryptography 扩展在 C# 中使用参数加密。

加密和解密参数会更难,但更安全。

如何:使用对称 (Rijndael) 密钥 (C#/VB.NET) 加密和解密数据

我将这种方法用于 OTP(一次性密码)Web 服务,它对我来说效果很好。

于 2009-04-21T20:00:02.960 回答