提问人:Robin Cybersec 提问时间:7/3/2023 最后编辑:Brian Tompsett - 汤莱恩Robin Cybersec 更新时间:7/3/2023 访问量:36
限制通过 URL 发送参数的标准 API 安全做法是什么?
What is the standard API Security practices for Restrict parameter sending through URL?
问:
从安全角度来看,很少有人说不允许在 API 中使用 GET 方法通过以下格式的 URL 发送查询参数。
GET my-server/api/payment/checkDue?clientCode=123&monthYear=01022023
他们还建议在 API 中使用 POST 方法而不是 GET 方法,如下所示。
POST `my-server/service/function { clientCode: 123, monthYear: 01022023}`
谁能向我建议这种情况下的最佳实践和安全漏洞?
答:
从安全角度来看,通常认为使用该方法而不是通过 URL 发送查询参数的方法是一种很好的做法。POST
GET
最佳实践:
用于敏感数据:请求通常用于在服务器上修改或创建数据的操作。
POST
POST
避免在 URL 中公开敏感数据:URL 中的查询参数通常记录在不同的位置,例如 Web 服务器日志、代理或浏览器历史记录。如果通过请求中的查询参数传递敏感数据,则这些数据很容易被看到,并可能暴露给未经授权的各方。
GET
防止缓存和书签:带有查询参数的请求通常由 Web 浏览器缓存,用户可以将其添加为书签。如果共享或缓存 URL,这可能会导致敏感数据意外泄露或潜在的安全漏洞。
GET
安全漏洞:
缺乏加密:除非实施了适当的加密机制(如 HTTPS),否则在传输过程中可能会拦截 和 请求。如果不加密,攻击者可能会窃听请求并获取敏感数据。
GET
POST
输入验证不充分:无论您是否使用 或 ,在服务器端验证和清理输入参数都至关重要。否则可能会导致安全漏洞,例如注入或跨站点脚本 () 攻击。
GET
POST
SQL
XSS
缺乏身份验证和授权:仅从 POST 切换到 POST 并不能解决身份验证和授权问题。
GET
有限的缓存控制:虽然使用请求有助于防止客户端缓存,但服务器端缓存或中间代理缓存仍可能发生。必须实现缓存控制标头或机制,以确保敏感数据不会被不当缓存或存储。
POST
总体而言,使用而不是发送查询参数可以增强安全性。POST
GET
有关此主题的其他链接:
上一个:未来可以维持的粒度授权
评论