C#Web服务中的加密

时间:2020-03-05 18:41:13  来源:igfitidea点击:

我正在寻找一种简单的方法来加密我的CWeb服务中的soap通信。

我正在研究WSE 3.0,但似乎Microsoft放弃了对它的支持,因此使用起来并不容易。
似乎可以选择WCF,但我不希望从.NET 2.0升级。

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

解决方案

回答

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

另外,我们还可以检查HttpRequest.IsSecureConnection属性。

回答

Perhaps I'm being naive, but would
    forcing the communication to be via
    https be acceptable? I develop web
    services that run on 2.0 and have had
    success with just getting IIS to
    enforce https on the virtual
    directory.

那将是最简单的方法
可能,但不幸的是我没有
可以控制IIS
配置,并不能保证
它可以运行https。

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

回答

我认为这会有所帮助;去年,我们用它来压缩Web服务,并且运行良好,我相信可以通过加密类来增强它。

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

回答

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

效果很好。但是,这种方法绝不是"简单"的。

回答

我们提供的任何未使用SSL / TLS的"加密"操作都可能会受到攻击。现在我们必须问自己,是否值得花一些时间在橡胶鸡安全措施上开发功能?也许是。

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

这就是SSL / TLS为我们解决的问题;使用TLS证书进行的舞蹈可以解决通过不受信任的渠道传达公钥的问题。

回答

我们可以在"使用System.Security.Cryptography扩展"中使用参数加密。

加密参数并将其解密将更加困难,但是更加安全。

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

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