我正在努力使Web服务安全。
这不是针对银行或任何类似的机构,但是如果服务将由未经授权的人使用,使用它的组织可能会损失一些钱(很难确切地知道有多少…)。
目的是不允许未经授权的
应用
使用除“getchallenge”以外的任何方法。对于用户身份验证,有一种不同的机制来检查用户名和密码。实际上,我将这两种方法结合在一起,但它们有不同的用途):
所以我要做的是:
我发送一个(ASP.NET)会话密钥(供所有人阅读)。ASP.NET的会话是15个随机生成的字节,除非延长,否则它将生存20分钟,而且没有它,ASP.NET将不会收到任何请求)。
在我的登录方法中,除了用户名和密码(任何人都可以获取,因为它是公共站点的一部分),我还收到了第三个参数——会话密钥,由MD5算法散列,6字节作为salt。
只有当散列正确时(我在服务器端散列并比较它),我才允许用户登录。
从那时起,在每个方法中,我都会检查用户是否已登录。
补充:
用户名和密码以明文形式发送,并且
这不是问题
(至少不是我要说的那个)。问题是有人(不是我们合作的公司)编写一个使用我的Web服务的应用程序。Web服务只能由
授权申请
.
此外,会话ID在每个请求和响应中来回发送(作为ASP.NET会话机制的一部分)。这就是ASP.NET如何知道“跟踪”特定于用户的会话)。很抱歉没有从一开始就澄清这一点。
(无理地认为这很明显)。
这种安全策略有多强大和有效?
谢谢。