我正在尝试使Web服务安全。
这不适用于银行或其他任何类型的服务,但如果某个未经授权的人使用该服务(很难确切知道该付多少钱),那么使用该服务的组织可能会损失一些钱。这是一个很好的安全策略吗?
目的是不允许未经授权的应用使用任何方法(不是“GetChallenge”等。对用户的认证有不同的机制,检查用户名和密码。我其实两者相结合,但它们服务于不同目的):
因此,这里是我做什么:
给我寄了(ASP.NET)会话密钥(给大家看了ASP.NET的会话15个随机生成的字节,它活了20分钟,除非延长,没有它,ASP.NET将不会收到任何请求)。
在我的SignIn方法中,除了用户名和密码(任何人都可以获取,因为它是公共站点的一部分)之外,我收到第三个参数 - 会话密钥由md5算法散列,其中6个字节为salt。
且仅当散列是正确的(我散列,它在服务器端进行比较) - 我让用户登录
从此在每一个方法,我检查,如果用户在签署
加了:用户名和密码以明文形式发送,并且这不是问题(不是我至少要解决的问题)。问题是有人(与我们合作的公司除外)编写使用我的Web服务的应用程序。网络服务只能由授权应用程序使用。
此外,会话ID会随每个请求和响应一起发送(作为ASP.NET会话机制的一部分,这就是ASP.NET知道如何“跟踪”特定于用户的会话)。对不起,从第一个地方不澄清。
(非理性认为这很明显)。
安全策略的强大和有效性如何?
谢谢。
我看不到在您的系统中实际使用加密的地方。哈希!=加密 – knittl 2010-10-04 09:10:08
@ knittl:是的,我现在看到了,但我的意思是广义上的。也许“安全”更好? – 2010-10-04 09:14:55
安全性绝对好于加密 – knittl 2010-10-04 09:15:48