REST API GET包含敏感数据

Gra*_*dys 8 encryption rest get http idempotent

我正在使用应该是幂等的方法来设计api ,并且不应该修改服务器上的任何数据.它应该是处理请求和返回给定参数响应的方法.

其中一个参数是敏感数据.使用其他加密不是一种选择.数据已经加密,但安全要求非常苛刻,甚至应该非常小心地处理加密数据.

根据REST规范,幂等查询方法应该实现为GET HTTP方法.在这种情况下的问题是不应该作为URL中的GET参数传递的敏感数据.HTTP标准中的唯一选项是在HTTP请求的正文部分中传递敏感数据.

我的问题是什么更好?打破rest api设计,发送查询请求作为POST,或者在URL中传递加密数据?也许有更好的解决方案,我没有看到?

inf*_*rno 7

根据REST规范,幂等查询方法应该实现为GET HTTP方法.

据我所知,我的英语有限!=必须.在这种情况下,您不会通过发送POST来破坏REST API设计.如果可能,您可以在HTTP标头中发送敏感数据.和ofc.如果要将敏感数据发送到任何地方,则应使用HTTPS.

  • 请注意,HTTPS 使用不会隐藏或编码 url 或任何 GET 参数。它们仍然可以在中间被嗅探或记录。您可以使用常规 POST 或使用自定义标头参数(如“X-Parameters”)发送数据。作为 POST 主体的标头将使用 SSL 进行编码。 (4认同)
  • @AleksandrRyabov 这不是真的。HTTP 隐藏了整个 URL,但在解密后它可以显示在许多地方,包括服务器日志、浏览器历史记录等......这就是为什么最好避免在 URL 中使用敏感数据。http://blog.httpwatch.com/2009/02/20/how-secure-are-query-strings-over-https/ https://security.stackexchange.com/questions/29598/should-sensitive-data- Ever-be-passed-in-the-query-string 如果您从服务器端而不是从浏览器调用 REST API,并且服务器日志已加密,我认为这不是问题。感谢您的意见,我将编辑答案! (3认同)
  • @AleksandrRyabov 让我看看它在哪里写到 HTTPS 不会加密查询字符串。:-) (3认同)
  • @AleksandrRyabov 好的。我放弃。我已经向您发送了 2 个链接,其中包含查询字符串已使用 HTTPS 加密的证据。你的链接并没有说它不是。它只是说 URL 可以不加密地存储在不同的存储中,并且信息可能会以这种方式泄露。如果您不存储它们或加密存储或信任存储,那么问题就解决了。我不知道。为什么您无法理解此漏洞的含义。 (3认同)
  • 看来我们正在失去讨论的根本关键。我将作者重点放在以下事实上:https 方案不会加密查询字符串中的任何数据。它可以只加密请求主体。许多人不了解 SSL 的工作原理,他们认为通过 SSL 发送的所有内容都是加密的,这是错误的。这就是为什么我指定了 OWASP 链接以及问题的完整解释。让我再次指定:https://owasp.org/www-community/vulnerability/Information_exposure_through_query_strings_in_url (2认同)
  • 作者的简短回答:来自 url 的数据在传输层加密,但不在客户端加密,这使得它们容易受到攻击。除此之外,泄漏还可能来自 http 引用站点:用户在 TLS 上打开站点 A,然后单击指向站点 B 的链接。如果两个站点都在 TLS 上,则对站点 B 的请求将在引用站点中包含站点 A 的完整 URL请求的参数。结果,站点 B 的管理员可以从服务器 B 的日志文件中检索完整路径)。摘要:切勿在 GET 参数中存储敏感数据。 (2认同)