免费程序分析,专注于对你重要的错误。
项目描述
快速愉快地找到Python Web应用程序的错误,无需改变你的工作流程
安装 · 动机 · 代码检查 · 使用
工作流程 · 集成 · 帮助 & 社区
受到React的ESLint插件等工具的启发,Bento为Flask和Django创建。使用Bento,您将
- 找到重要的错误。 检查可在您的代码中找到安全和可靠性错误。它们经过数千个开源项目的审查,并且永远不会挑剔您的样式。
- 升级您的工具。 您无需修复现有错误即可采用Bento。它是基于差异的,可以找到由您的更改引入的新错误。而且没有配置。
- 快速愉悦。 在本地或CI中自动运行Bento。无论哪种方式,它都在离线状态下运行,并且永远不会将您的代码发送到任何地方。
安装
Bento 是免费的,需要 Python 3.6+ 和 Docker 19.03+。它可以在 macOS 和 Linux 上运行。
在 Git 项目的目录中
$ pip3 install bento-cli && bento init
大胆地写代码吧!
动机
阅读我们的 Bento 介绍博客文章 了解完整的故事。
Bento 是为了使世界级的安全和漏洞发现免费提供给所有开发者而进行的一项探索。我们发现,大多数开发者甚至从未听说过,更不用说尝试过那些能够发现代码深层缺陷的工具:例如发现 Heartbleed 的 Codenomicon,或者在 Facebook 上的 Zoncolan,它发现的严重安全漏洞比任何人力都要多。这些工具可以发现严重问题,并且还能节省大量时间,在人类之前就能识别出成千上万的问题。Bento 是向这些工具的普遍访问迈进的一步。
我们也是像 Black 和 Prettier 这样的有偏见的工具的强烈支持者。这有两个影响: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!
帮助和社区
需要帮助或想分享反馈?我们很高兴听到您的声音!
- 请通过 support@r2c.dev 联系我们
- 加入我们社区 Slack 中的 #bento (点击加入)
- 直接在 GitHub 上 提交一个问题 或 提交一个功能请求 — 我们欢迎所有建议!
我们不断推出新功能和改进。
我们很幸运能从开源社区以及像 Bandit、ESLint、Flake8 等优秀项目中获得贡献。🙏
许可证和法律
请参阅 条款和隐私文件。
版权(c)r2c。
项目详情
下载文件
下载您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源分布
构建分布
bento-cli-0.12.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 3f0548a257b61fbf30ef60940472c08974b17dfa69e324d8871611317f75baa3 |
|
MD5 | 5568af9bf01cb6b55f7a11a3ebda3b12 |
|
BLAKE2b-256 | 5afd09a8c7f1bec079c2c0334f6bed70d999a74e9b59a2cd0c013f9fc744187c |
bento_cli-0.12.0-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d5fad36c1d15ca72fd6f4b9258190fce24af1b61e148705b141fae67a66a75d1 |
|
MD5 | 78a4381a8ae89419392afc8defc0af91 |
|
BLAKE2b-256 | 7748a8475ee524269173fc88c042d4fdcb07167a033c9c58f7b38d92e570ffe6 |