我应该为生产环境禁用 BroswableAPIRenderer 吗?

Posted

技术标签:

【中文标题】我应该为生产环境禁用 BroswableAPIRenderer 吗?【英文标题】:Should I disable BroswableAPIRenderer for production environment? 【发布时间】:2020-10-12 20:56:15 【问题描述】:

大家好,我正在将一个 django 项目部署到 AWS 上的 elastic-beanstalk,它目前运行良好,但是我想知道让 BrowsableAPIRenderer 能够处理我的浏览器上的请求是好是坏,我试图找到与它相关的任何东西,但如果没有的话,真的没有太多的文档。我的应用程序有一个非常严格的权限策略,即使我通过可浏览的 API 访问,它也会返回以下内容:


    "detail": "Authentication credentials were not provided."

但是它显示了一些关于端点的“信息”。正是在这部分,我发现我很难定义是否应该允许它,以便其他开发人员可以轻松了解正在发生的事情,或者另一方面,如果公众可以访问它是一个很大的风险。

【问题讨论】:

【参考方案1】:

您可能会发现this question 及其答案很有用。基于this answer,提供 BrowsableAPIRenderer 确实有助于开发:

    它提供了简单的 UI 界面来与模型对象进行交互。 可以提供详细的调试信息。 可以在某些 API 根目录中显示 URL 列表

根据您当前的设置,用户至少需要登录 DRF 登录页面或 Django ADMIN 页面才能查看您的 API 并与之交互。

您可以在开发中启用 BrowsableAPI,但在生产设置中禁用它following this answer。

在生产中,我不希望其他具有写入权限的用户通过 BrowsableAPI 与 API 进行交互。它将强制其他用户使用前端应用程序或其他安全应用程序与 API 进行交互。这将提供一个安全层来禁止使用 BrowsableAPI 完成的描述性操作。

【讨论】:

以上是关于我应该为生产环境禁用 BroswableAPIRenderer 吗?的主要内容,如果未能解决你的问题,请参考以下文章

在运行时启用/禁用 SwaggerUI

在 Spring Boot 应用程序的生产环境中禁用 GraphiQL Playground

在 Swift 项目中为生产禁用 NSLog

Spring Boot 在本地环境中禁用 SAML 安全性

在禁用功能的情况下将代码运送到生产环境是不是存在风险?

在生产环境下禁用swagger