跳转到主要内容

免费程序分析,专注于对你重要的错误。

项目描述

Bento logo

快速愉快地找到Python Web应用程序的错误,无需改变你的工作流程

安装 · 动机 · 代码检查 · 使用
工作流程 · 集成 · 帮助 & 社区

PyPI PyPI - Downloads Issues welcome! Follow @r2cdev

受到React的ESLint插件等工具的启发,Bento为Flask和Django创建。使用Bento,您将

  • 找到重要的错误。 检查可在您的代码中找到安全和可靠性错误。它们经过数千个开源项目的审查,并且永远不会挑剔您的样式。
  • 升级您的工具。 您无需修复现有错误即可采用Bento。它是基于差异的,可以找到由您的更改引入的新错误。而且没有配置。
  • 快速愉悦。 在本地或CI中自动运行Bento。无论哪种方式,它都在离线状态下运行,并且永远不会将您的代码发送到任何地方。

Demonstrating Bento running in a terminal

安装

Bento 是免费的,需要 Python 3.6+Docker 19.03+。它可以在 macOS 和 Linux 上运行。

在 Git 项目的目录中

$ pip3 install bento-cli && bento init

大胆地写代码吧!

动机

阅读我们的 Bento 介绍博客文章 了解完整的故事。

Bento 是为了使世界级的安全和漏洞发现免费提供给所有开发者而进行的一项探索。我们发现,大多数开发者甚至从未听说过,更不用说尝试过那些能够发现代码深层缺陷的工具:例如发现 Heartbleed 的 Codenomicon,或者在 Facebook 上的 Zoncolan,它发现的严重安全漏洞比任何人力都要多。这些工具可以发现严重问题,并且还能节省大量时间,在人类之前就能识别出成千上万的问题。Bento 是向这些工具的普遍访问迈进的一步。

我们也是像 BlackPrettier 这样的有偏见的工具的强烈支持者。这有两个影响:Bento 忽略与样式相关的问题以及随之而来的争论,并且它附带了一系列我们认为是高信号和值得关注的检查。了解更多关于我们的决策过程,请参阅 你的代码检查器不应该告诉你三件事

代码检查

Bento 的检查专注于 Flask 和 Django 项目中的安全性和可靠性漏洞。

Flask Jinja Django
缺少 JWT 令牌 href 模板变量 即将推出
安全设置 cookie 缺少 noopener
发送文件打开 缺少 noreferrer Docker
未转义文件扩展名 缺少 csrf 保护 Hadolint
使用蓝图进行模块化 缺少 doctype
使用 jsonify meta charset Shell
避免硬编码配置 meta content-type ShellCheck
未引用的属性模板变量
Requests
http 上无认证 SQLAlchemy
使用 scheme 即将推出
使用超时

查看 Bento 的完整专业检查列表 Bento 专业检查

使用方法

默认情况下,Bento 配置为个人使用。有关为所有贡献者设置 Bento 的信息,请参阅 团队使用

升级

$ pip3 install --upgrade bento-cli

命令行选项

$ bento --help
Usage: bento [OPTIONS] COMMAND [ARGS]...

Options:
  -h, --help    Show this message and exit.
  --version     Show the version and exit.
  --agree       Automatically agree to terms of service.
  --email TEXT  Email address to use while running this command without global
                configs e.g. in CI

Commands:
  archive  Suppress current findings.
  check    Checks for new findings.
  disable  Turn OFF a Bento feature for this project.
  enable   Turn ON a Bento feature for this project.
  init     Autodetects and installs tools.

  To get help for a specific command, run `bento COMMAND --help`

退出代码

bento check 可能会退出以下退出代码

  • 0:Bento 成功运行且未发现错误
  • 2:Bento 成功运行并在您的代码中发现了问题
  • 3:Bento 或其底层工具运行失败

工作流程

个人使用

Bento 了解避免干扰您编写代码的重要性。它会在您的差异上运行提交时间,并且只影响您;它不会更改其他项目贡献者的内容或修改 Git 状态。

初始化在幕后启用 autorun。默认情况下,autorun 会阻止 Bento 返回发现时的提交。要使其非阻塞

$ bento enable autorun --no-block

您可以通过以下方式手动在暂存文件或目录上运行 Bento

$ bento check [PATHS]

这将仅显示由这些文件引入的新发现,并且不在存档中(.bento/archive.json)。使用 --all 检查所有 Git 跟踪文件,而不仅仅是那些已暂存的文件

$ bento check --all [PATHS]

此功能利用 Git 钩子。如果 Bento 钩子错误地阻止了您的提交,您可以通过在提交时传递 --no-verify 标志给 Git 来跳过它(请谨慎使用,因为所有钩子都将被跳过)

$ git commit --no-verify

团队使用

本地运行

为所有项目贡献者设置 Bento,将 Bento 的配置添加到 Git 中(默认情况下会被忽略)

$ cd <PROJECT DIRECTORY>
# Add Bento's cache to the project's .gitignore
$ echo ".bento/cache" >> .gitignore
# Commit Bento's config to your project
$ git add --force .bento .bentoignore

贡献者可以使用项目的配置自行运行 Bento

$ bento init

在 CI/CD 中运行

Bento 对 GitHub Actions 检查拉取请求提供了一等支持。此类检查将仅报告由拉取请求中的更改引入的虫子。

要开始,只需在项目目录中运行 bento enable ci。这将向您的存储库添加一个 CI 配置文件。

高级 CI/CD 配置

您也可以在 CI 中配置 Bento 来分析整个项目,而不仅仅是拉取请求中的更改。这样,您就不必在 Bento 阻塞之前修复所有现有问题,其 archive 功能允许在 CI 中跟踪和忽略历史问题。

要使用 archive 功能,以便 Bento 仅在发现新问题时返回非零退出代码,而不是所有现有问题,首先创建存档

$ cd <PROJECT DIRECTORY>
$ bento archive .

将 Bento 的配置提交到项目

# Add Bento's cache to the project's .gitignore
$ echo ".bento/cache" >> .gitignore
# Commit Bento's config to your project
$ git add --force .bento .bentoignore

然后您可以将 Bento 添加到您的 CI 脚本中

$ pip3 install bento-cli && bento --version
$ bento --agree --email=<YOUR_EMAIL> check --all 2>&1 | cat

我们通过 cat 进行管道操作以禁用 Bento 的交互式 tty 功能(例如进度条、使用分页器显示多个发现)。

如果您使用 CircleCI,上述命令变为

version: 2.1

jobs:
  bentoCheck:
  executor: circleci/python:3.7.4-stretch-node
  steps:
    - checkout
    - run:
        name: "Install Bento"
        command: pip3 install bento-cli && bento --version
    - run:
        name: "Run Bento check"
        command: bento --agree --email=<YOUR_EMAIL> check --all 2>&1 | cat

bento check 如果在您的代码中找到问题,将退出并返回非零退出代码(见 退出代码)。

如果您需要帮助设置另一个 CI 提供商的 Bento,请 提交一个问题。如果您设置了一个在此处未记录的 CI 提供商的 Bento,我们欢迎您提交文档 PR!

帮助和社区

需要帮助或想分享反馈?我们很高兴听到您的声音!

我们不断推出新功能和改进。

  • 注册 Bento 通讯 (点击订阅) — 我们承诺不会进行垃圾邮件发送,并且您可以在任何时候取消订阅
  • 在此处查看过去的公告、发布和问题 (点击查看)

我们很幸运能从开源社区以及像 BanditESLintFlake8 等优秀项目中获得贡献。🙏

许可证和法律

请参阅 条款和隐私文件



r2c logo

版权(c)r2c

项目详情


下载文件

下载您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分布

bento-cli-0.12.0.tar.gz (91.9 kB 查看哈希值)

上传时间

构建分布

bento_cli-0.12.0-py3-none-any.whl (119.5 kB 查看哈希值)

上传时间 Python 3