使用RESTful API - 它是否安全?

Mic*_*rey 6 api rest url https

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

我们可以通过将用户名和密码作为URL参数进行身份验证来进行身份验证.

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

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

Fer*_*cio 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

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


小智 6

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

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

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

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


sle*_*ica 5

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

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

你安全了.