使用RESTful API - 它是否安全?

时间:2013-02-07 18:36:09

标签: api url rest https

我们正在与服务提供商合作,该服务提供商通过RESTful API公开他们的服务。

我们可以通过传递用户名和密码作为URL参数来使用API​​进行身份验证。

示例:https://example.com/api/service.json?api_user=Username&api_key=Password

我知道这是使用SSL。但是,由于用户名和密码是URL的一部分,这不能被第三方截获吗?

3 个答案:

答案 0 :(得分:7)

不,第三方只能看到目的地(example.com)。 URL的其余部分实际上嵌入在请求中。

有助于理解如何发出HTTP(或HTTPS)请求的过程。

  1. 确定协议(在本例中为HTTPS,使用端口443)
  2. 使用DNS获取服务器的IP地址
  3. 建立与服务器的TCP连接(如果涉及SSL,则有点复杂)
  4. 在新连接上向服务器发出请求,该请求类似于

    GET /api/service.json?api_user=Username&api_key=Password

  5. 由于实际请求是加密数据流的一部分,监控连接的人无法提取敏感信息。

答案 1 :(得分:6)

以前的答案在技术上都是正确的;如果您使用HTTPS,则URL和查询字符串数据将在传输之前进行加密,并且可以被认为是安全的。

但是,API要求用户名和密码作为查询字符串参数的事实可能表明安全性有些松懈。

例如,许多Web服务器默认情况下会记录请求查询字符串参数,这意味着您的纯文本凭据可能位于磁盘的某处(许多公司将以不安全的方式存储或备份Web服务器日志)。

简而言之:将凭据作为查询字符串参数传递并不是一种安全风险本身,但通常是一种不好的做法,可能是更大安全问题的症状。

答案 2 :(得分:5)

  

但是,由于用户名和密码是网址的一部分,因此无法使用   这被第三方拦截了?

URL也是在加密下发送的。换句话说,在将 URL发送到服务器之前,发生了保护通道的过程。

你很安全。