【问题标题】:Best security practise for passing resource ID in URI在 URI 中传递资源 ID 的最佳安全实践
【发布时间】:2017-02-01 04:39:16
【问题描述】:

我目前正在为银行开发 Rest API。在 Rest API 原则中,URI 是唯一标识。这意味着我们必须在请求 URL 中传递资源 ID 例如:

  • GET /customer/
  • PUT /客户/
  • 删除/客户/

但问题在于我的银行出于安全原因禁止在 URI 中传递 id。 (URI可以读取任何一个)

有人可以告诉我,在不违反 Rest 资源命名原则的情况下,是否有任何行业级别的最佳实践来克服此安全问题?

【问题讨论】:

  • 您确定禁止将 ID 放入 URI 中吗?我知道他们不希望您传递任何敏感数据,例如会话 ID 或信用卡号,由于多种原因,这确实是最佳做法(请求 URL 登录客户端、代理,也可以在监视器上看到有时等)但是一般来说有任何资源ID吗?这没有多大意义。

标签: spring rest security uri microservices


【解决方案1】:

但问题在于我的银行出于安全原因禁止在 URI 中传递 id。 (URI可以读取任何一个)

也就是说,如果您不使用 TLS/SSL,这在银行等安全关键型环境中无论如何都是不可行的!如果有人能够读取您的请求,他就能够读取您的 HTTP 流量,因此没有真正的方法可以可靠地保护通过该线路发送的任何内容,无论是在 URL、标题或内容中!

如果您无法在 URI 中添加任何内容,那么您将很难开发干净简洁的 restfull HTTP API!

【讨论】:

  • 我们使用 TLS/SSL。如果是这样,你能保证在 url 中传递 ID 没有安全问题吗??
  • 如果做得对;当然! TLS 加密 HTTP 端点之间的所有通信,请在此处阅读 TLS:de.wikipedia.org/wiki/Transport_Layer_Security
  • 但是 URL 可以是现金或保存在浏览器历史记录中。
  • 那 A:取决于您是否实际浏览浏览器(或者您有一个网络应用程序在不浏览浏览器的情况下向 API 发出请求)和 B:如果您不相信浏览器是确保你已经输了!
猜你喜欢
  • 2015-11-18
  • 1970-01-01
  • 2010-09-28
  • 1970-01-01
  • 2011-01-26
  • 2023-03-23
  • 2013-06-19
  • 2014-01-17
  • 2023-03-08
相关资源
最近更新 更多