不久前,我们为一个没有站点证书/SSL的客户创建了一个站点。它只有一个基本的asp_net登录系统。
你不能从这个网站购买任何东西,它也不包含个人信息--它只显示股票,并为用户提供一个电话号码,他们可以在那里打电话购买股票。
我们的一个用户有自己的系统,想要通过WebService获取一些信息--我们原本打算放一个带有WebMethod的WebService,获取用户名、密码和ID,然后将一些信息传回他们的系统。
其中一名开发人员表示,这将使系统的安全性大大降低,因为使用用户名和密码的WebMethod调用比网站上的登录系统安全性低得多。
这个WebMethod调用真的比站点上的登录系统更不安全吗?
发布于 2012-09-27 06:39:18
这完全取决于您计划如何接受该密码数据。您应该确保他们不会通过网络发送密码明文。您可以通过使用以下类型的模式来完成此操作:
向authenticate
发送加密的密码和其他数据
一般来说,无论是什么密码,您都不应该通过网络发送纯文本密码。二进制、soap、web服务、http等等。如果它被发送了,有人可以嗅探它。它只需要一次良好的wireshark捕获,您的所有数据都会被泄露。
如果你已经在做线上加密,那么我不认为这是不安全的。如果您也添加了某种握手,以便您知道谁是谁,或者如果您不能确保在IP源无法发送正确令牌的情况下对请求进行速率限制,则会更好。这就像是如果有人没有在正确的尝试次数内登录,就会把他们锁在你的UI之外。
添加SSL也是一个好主意,因为它可以防止中间人攻击。
我不是安全专家,但我所知道的是,安全是关于层的。加密流量,从不发送明文,关闭端口,管理权限,散列密码,握手,限制身份验证尝试,大量日志等。
发布于 2012-09-27 10:00:42
您可以对WebService文件使用混合模式身份验证。
请按照以下步骤操作:
匿名文件右键单击webservice文件,转到authentication
<location path="webserice.svc"> <system.web> <authorization> <allow users="*"/> </authorization> </system.web> </location>
用户的凭据
localhost.MyWebService myService = new localhost.MyWebService();
`System.Net.CredentialCache myCredentials = new System.Net.CredentialCache(); NetworkCredential netCred = new NetworkCredential("UserName", "Password"); myCredentials.Add(new Uri(myService.Url), "Basic", netCred); myService.Credentials = myCredentials;`如果在调用Webservice时可以使用SSL,那就更好了
https://stackoverflow.com/questions/12611183
复制相似问题