C# 在.net webservice中使用FormsAuthentication安全登录,或者是?
我创建了一个web服务,希望通过使用表单身份验证使其更加安全。我添加了以下代码:C# 在.net webservice中使用FormsAuthentication安全登录,或者是?,c#,.net,web-services,security,C#,.net,Web Services,Security,我创建了一个web服务,希望通过使用表单身份验证使其更加安全。我添加了以下代码: [WebMethod(Description = "Login function returns true for success and false for fail.", EnableSession = true)] public bool Login(string Username, string Password) { return User.
[WebMethod(Description = "Login function returns true for success and false for fail.", EnableSession = true)]
public bool Login(string Username, string Password)
{
return User.Validate(Username, Password);
}
我的User.Validate函数执行所有身份验证,工作正常,但我不确定将用户名和密码传递给web服务是否安全。这是否比通过不带SSL的普通web表单提交用户名和密码字段时的安全性低?您的web方法的安全性不低于不带SSL的普通web表单。两者都是以明文形式发送有效负载内容(用户名、密码)的基本POST条目(您可以让它们获取,但POST最有可能)
只是一个评论:不确定通过添加一个返回简单布尔值的身份验证方法来提高web服务安全性的策略。大多数身份验证方案都需要使用客户端必须携带的会话或身份验证令牌。在网络浏览器中,这是通过cookies等自动实现的;它需要对大多数使用web服务的客户端进行主动管理。您的web方法的安全性不亚于没有SSL的普通web表单。两者都是以明文形式发送有效负载内容(用户名、密码)的基本POST条目(您可以让它们获取,但POST最有可能)
只是一个评论:不确定通过添加一个返回简单布尔值的身份验证方法来提高web服务安全性的策略。大多数身份验证方案都需要使用客户端必须携带的会话或身份验证令牌。在网络浏览器中,这是通过cookies等自动实现的;它需要对大多数使用web服务的客户端进行主动管理。取决于您需要信任谁。客户端、传输和/或服务器
- 客户端需要知道密码才能输入,所以这不是真正的问题
- 传输可以(也应该)使用HTTPS进行加密——HTTP不好
- 服务器-您信任运行服务器的人员吗?用户是否会在服务器上使用与其公司相同的密码(为服务器所有者提供可能的密码以尝试攻击您的公司帐户) 服务器安全性的一个良好的健全性检查是您是否提供了更改密码页面。任何允许用户更改密码的网站都将通过线路发送密码,并且在服务器上以明文形式提供(可以在途中进行加密)。这是可以避免的,但我还没有找到这样的网站 干杯
- 客户端需要知道密码才能输入,所以这不是真正的问题
- 传输可以(也应该)使用HTTPS进行加密——HTTP不好
- 服务器-您信任运行服务器的人员吗?用户是否会在服务器上使用与其公司相同的密码(为服务器所有者提供可能的密码以尝试攻击您的公司帐户) 服务器安全性的一个良好的健全性检查是您是否提供了更改密码页面。任何允许用户更改密码的网站都将通过线路发送密码,并且在服务器上以明文形式提供(可以在途中进行加密)。这是可以避免的,但我还没有找到这样的网站 干杯
- 取决于你需要信任谁。客户端、传输和/或服务器
不管怎样,这似乎是一个好主意。那篇文章是否回答了我认为是你真正的问题(“我应该如何正确地做到这一点?”) 如果不使用SSL,传递密码是不安全的。此外,如果服务公开了多个方法,则用户必须为每个方法调用输入用户名和密码,或者调用应用程序必须将此信息保留在某个位置,并可能导致其他漏洞
为了避免所有这些问题,保护服务的正确方法之一是使用类似于的工具。此协议将用户名密码交换为请求令牌,然后将此请求令牌交换为访问令牌。对webservice的后续调用将使用访问令牌而不是用户名密码。如果不使用SSL,传递密码是不安全的。此外,如果服务公开了多个方法,则用户必须为每个方法调用输入用户名和密码,或者调用应用程序必须将此信息保留在某个位置,并可能导致其他漏洞
为了避免所有这些问题,保护服务的正确方法之一是使用类似于的工具。此协议将用户名密码交换为请求令牌,然后将此请求令牌交换为访问令牌。随后对Web服务的调用将使用访问令牌,而不是用户名密码。谢谢,这正是我的想法。如果我不希望以明文形式发送,那么所有内容都应该使用ssl。顺便说一句,Web服务将由flash应用程序使用。布尔返回只是让它知道用户是否已被验证。剩下的方法在返回任何东西之前检查是否经过验证。谢谢,这正是我的想法。如果我不希望以明文形式发送,那么所有内容都应该使用ssl。顺便说一句,Web服务将由flash应用程序使用。布尔返回只是让它知道用户是否已被验证。其余的