gpt4 book ai didi

api - REST API 设计 : GET requires sensitive parameters that should not be stored in web server logs

转载 作者:行者123 更新时间:2023-12-04 14:34:24 24 4
gpt4 key购买 nike

我正在设计一个 (as-RESTful-as-possible) API,想知道您如何最好地解决以下问题:

  • 假设我们正在设计一个 TLS 端点来检索一些资源:GET /objects/{id}
  • 我们不想要对象 {id}s存储在我们的 Web 服务器日志中,因此我们希望避免使用查询字符串或 URI 参数;这给我们留下了请求正文中的参数。 (假设数据是敏感的,我们无法访问另一个非敏感的 id)
  • 我了解建议不要在 GET 请求正文中包含参数。 HTTP GET with request body
  • 我知道也建议不要使用 POST 来获取数据,因为它更倾向于 RPC 设计风格,并且通常可能会令人困惑。

  • 我们如何(应该)设计 API GET端点以避免使用可以记录的查询或 URI 参数?
    在这种情况下使用POST是否可以接受还是有其他创造性的方式?
    (注意:此 API 不会暴露给第三方)

    最佳答案

    我认为有很多服务都面临着想要保护敏感标识符的问题。然而,即使这个问题已经有些年头了,我也没有找到合适的解决方案。

    所提供的简单更改网络服务器日志记录的解决方案并不完美,如前所述,但也忽略了这样一个事实,即每个客户端在使用您的 API 时都应该这样做(其中可能是 JavaScript 客户端,通过代理,在浏览器中。 ..祝你好运)

    我知道的解决方案是:

  • 加密参数;但这会使您的 API 更加复杂,并且需要加密 key 。
  • 使用伪 ID,如@jj-geewax 所述;然而,这可能比 encyption (1) 更复杂,因为您必须为每个敏感参数实例交换一个伪 ID:
  • 客户端在向服务器发出的请求中使用伪 ID 发起,服务器比向客户端发出请求来解析伪 ID! (所以客户端也应该有一个端点!)
  • 客户端将敏感 ID POST 到服务器,它接收到一个伪 ID,它可以在针对此 ID 的请求中使用该 ID
  • 客户端和服务器事先通过其他方式交换了伪ID
  • POST 正文中的参数,同时请求数据;这不是休息
  • 可以选择使用 X-HTTP-Method-Override 使您实际请求数据的应用程序更加明确。

  • 解决方案 3 似乎是迄今为止最简单/最容易实现的方法,尽管它违反了 REST 设计规则。但我很想听听替代方法或其他见解。

    更新:OWASP 对请求中的敏感参数做了以下说明

    Sensitive information in HTTP requests

    RESTful web services should be careful to prevent leaking credentials. Passwords, security tokens, and API keys should not appear in the URL, as this can be captured in web server logs, which makes them intrinsically valuable.

    • In POST/PUT requests sensitive data should be transferred in the request body or request headers.
    • In GET requests sensitive data should be transferred in an HTTP Header.


    https://cheatsheetseries.owasp.org/cheatsheets/REST_Security_Cheat_Sheet.html#sensitive-information-in-http-requests

    这可能比使用 (POST) 正文要困难一些,但在查看如何实现 REST 时也很好。

    关于api - REST API 设计 : GET requires sensitive parameters that should not be stored in web server logs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32213026/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com