C#Web服务中的加密
我正在寻找一种简单的方法来加密我的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服务,它对我来说很好用。