保护REST API的用户/密码

时间:2013-05-16 03:29:30

标签: asp.net security rest login

我在安全的ASP.NET网站上有一个Web服务REST API,需要登录才能工作。以编程方式请求用户名/密码的最安全方式是什么? (只是向URL添加?username=me&password=mysecret对我来说似乎并不安全(即使这是一个HTTPS连接)。

1 个答案:

答案 0 :(得分:2)

有几种方法可以满足您的需求:

  • [错误的方式]可以将用户名和密码与查询字符串一起传递。从理论上讲,这种做法没有任何问题,但这样的URL(http://example.com?username=me&password=mysecret)通常由浏览器,代理等缓存,从而利用其他人可以通过使用这些存储的数据访问受保护数据的潜在风险
  • [GOOD WAY]为了消除与浏览器,代理等的缓存能力相关的“几乎所有”风险,而且为了使用HTTP协议的标准功能,您必须处理特殊的{{3 }}。

HTTP授权标头:

  • 如果您使用HTTP S 连接,则可以使用HTTP Authorization header方法。

    Authorization标头的构造如下:

    1. 用户名和密码组合成一个字符串“username:password”。
    2. 然后使用Base64对结果字符串文字进行编码。
    3. 然后将授权方法和空格即“基本”放在编码的字符串之前。

      例如,如果用户代理使用“Aladdin”作为用户名并使用“打开芝麻”作为密码,则标题形成如下:

      Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

  • 如果您使用HTTP连接,则应使用Basic Access Authentication方法。因为HTTPS连接更加复杂和无用,如果你愿意,我可以让你阅读更多相关内容(Digest Access Authentication)。