C# 实现Web服务/API最安全的方法是什么?

C# 实现Web服务/API最安全的方法是什么?,c#,.net,web-services,api,soap,C#,.net,Web Services,Api,Soap,我有一个网站与用户和他们的数据相应 实现web服务/API以确保用户的登录凭据和数据安全的最安全的方法是什么?oAuth并不是一个真正的选项,因为它不一定会在其他web应用中使用 我担心的是,将用户名和密码作为输入进行明文传输是危险的,而且令牌也可能被恶意窃取和重用 我是否需要想出我自己的加密和解密数据的方法,或者是否已经有了一种通用的做法 关键是它对世界上的任何人都是尽可能开放的,但从定义上讲是安全的。文档将提供给每个人使用。使用SSL连接怎么样?不要编写自己的加密 一点SSL有什么问题?对于

我有一个网站与用户和他们的数据相应

实现web服务/API以确保用户的登录凭据和数据安全的最安全的方法是什么?oAuth并不是一个真正的选项,因为它不一定会在其他web应用中使用

我担心的是,将用户名和密码作为输入进行明文传输是危险的,而且令牌也可能被恶意窃取和重用

我是否需要想出我自己的加密和解密数据的方法,或者是否已经有了一种通用的做法


关键是它对世界上的任何人都是尽可能开放的,但从定义上讲是安全的。文档将提供给每个人使用。

使用SSL连接怎么样?

不要编写自己的加密

一点SSL有什么问题?对于“常规”WSDL/SOAP客户机(asmx),使用SOAP头(通过SSL)进行此操作并不少见

使用WCF,这将正式化为TransportWithMessageCredential(只需搜索)。当然,您可以使用证书、联合、kerberos等


除了传输安全性(SSL)之外,WCF还支持基于消息的安全性—通过添加的功能,您可以只加密安全头。就个人而言,我喜欢使用TransportWithMessageCredential(即SSL)保持简单。

WS-Security标准始终存在:

.NET通过Microsoft Web服务增强功能在.NET 1.1和.NET 2.0中实现:



它提供了各种方法,在通过电线发送SOAP信封之前对其进行加密,安全地传输里面的数据。

为什么不使用标准呢


编辑:只想补充一下Justin的答案,它也是在中实现的。

任何与第三方共享的身份验证方法都可能被利用,你必须在某个地方划一条线。使用HTTP/S和WS-*服务保护连接可能是最好的方法。如果该服务仅由具有固定IP地址的已知系统访问,则使用防火墙进一步保护您的机箱免受外部干扰。

打开支持该服务的文档。