我在需要登录才能工作的安全 ASP.NET 网站上有一个 Web 服务 REST API。以编程方式请求用户名/密码的最安全方法是什么?(只是?username=me&password=mysecret
在 URL 中添加一个对我来说似乎并不那么安全(即使这是一个 HTTPS 连接)。
问问题
154 次
1 回答
2
有几种方法可以实现您所需要的:
- [错误方式] 可以将用户名和密码与查询字符串一起传递。从理论上讲,这种做法没有任何问题,但这样的 URL ( http://example.com?username=me&password=mysecret ) 通常会被浏览器、代理等缓存,从而利用其他人可以访问的潜在风险通过使用这些存储的数据来保护您的数据。
- [GOOD WAY] 为了消除与浏览器、代理等缓存能力相关的“几乎所有”风险,而且为了使用 HTTP 协议的标准特性,您必须处理特殊的HTTP Authorization 标头。
HTTP 授权标头:
- 如果您使用的是 HTTP S连接,则可以使用基本访问身份验证方法。
Authorization 标头的构造如下:
用户名和密码组合成一个字符串“用户名:密码”。
然后使用 Base64 对生成的字符串文字进行编码。
然后将授权方法和一个空格(即“Basic”)放在编码字符串之前。
例如,如果用户代理使用“Aladdin”作为用户名,使用“open sesame”作为密码,那么标头的格式如下:
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
- 如果您使用的是 HTTP 连接,那么您应该使用Digest Access Authentication方法。因为 HTTPS 连接更复杂且无用,所以如果您愿意,我可以让您阅读更多相关信息(也许在这里)。
于 2013-05-16T08:01:21.070 回答