崇明集团网站建设,北京做手机网站的公司名称,如何建设一个查询网站,百度快照提交github仓库#xff1a;https://github.com/open-rust-initiative/sensleak-rs Rust是一门神奇的编程语言#xff0c;它提供了内存安全、零成本抽象、并发安全等特性#xff0c;使开发人员能够编写高性能、高抽象和安全的代码。 这是我用rust开发的第一个工作#xff0c;希望…github仓库https://github.com/open-rust-initiative/sensleak-rs Rust是一门神奇的编程语言它提供了内存安全、零成本抽象、并发安全等特性使开发人员能够编写高性能、高抽象和安全的代码。 这是我用rust开发的第一个工作希望大家多多指教多多star多多参与。
介绍
sensleak - 扫描 Git 仓库中的敏感信息 sensleak 是一个基于 Rust 的工具用于扫描 Git 仓库中的敏感数据特别是针对嵌入在代码中的密码、API 密钥、证书和私钥等敏感信息。
背景
许多开发人员在代码中存储了诸如密钥和证书等敏感信息这会带来安全风险。因此有商业服务如 GitGuardian 用于扫描 GitHub 和 GitLab以及开源组件如 truffleHog 和 Gitleaks 提供类似功能的支持。
功能
增强安全性。使用 Rust 开发工具以确保提高安全性和内存安全性。 命令行界面。创建用户友好的命令行工具生成全面的测试报告。带访问控制的 REST API。将工具作为服务运行并通过 REST API 提供访问控制。利用 Swagger 生成 API 文档。并发扫描。利用线程池控制敏感信息的并发扫描从而提高整体效率。
技术栈
开发语言Rust命令行交互clap.rsGit 仓库操作git2Web 框架axum自动生成的 OpenAPI文档utoipa
用法
命令行界面用法 在命令行界面 (CLI) 中运行工具进行敏感数据检查。
cargo run --bin scan -- -help使用说明scan.exe [选项] --repo REPO选项
--repo REPO 目标仓库
--config CONFIG 配置文件路径 [默认值gitleaks.toml]
--threads THREADS sensleak 启动的最大线程数 [默认值10]
--chunk BATCH_SIZE 每个批次处理的 git 文件数量 [默认值10]
--report REPORT 写入泄漏信息的 JSON 文件路径
--report-format REPORT_FORMAT 报告格式可选项为 json、csv、sarif [默认值json]
-v, --verbose 显示扫描过程的详细输出
--pretty 如果存在泄漏信息则对 JSON 进行格式化打印
--commit COMMIT 要扫描的提交的 SHA
--commits COMMITS 以逗号分隔的要扫描的提交列表
--commits-file COMMITS_FILE 包含要扫描的提交列表的每行一个提交的文件
--commit-since COMMIT_SINCE 扫描比特定日期更新的提交。示例格式2006-01-02 或 2023-01-02T15:04:05-0700
--commit-until COMMIT_UNTIL 扫描比特定日期更旧的提交。示例格式2006-01-02 或 2006-10-02T15:04:05-0700
--commit-from COMMIT_FROM 从指定提交开始扫描
--commit-to COMMIT_TO 扫描直到指定提交为止
--branch BRANCH 要扫描的分支
--uncommitted 对未提交的代码运行 sensleak
--user USER 设置要扫描的用户 [默认值 ]
--repo-config 从目标仓库加载配置。配置文件必须是 .gitleaks.toml 或 gitleaks.toml
--debug 记录调试消息
--disk DISK 克隆仓库到磁盘
-h, --help 打印帮助信息使用 --help 获取更多信息
-V, --version 打印版本信息运行 cargo run --bin api 获取 REST API。
仓库https://github.com/open-rust-initiative/sensleak-rs$ cargo run --bin scan -- --repoD:/Workplace/Java/project/ExpiryReminderAssistant -v --pretty[INFO][2023-06-05 09:59:59] Clone repo ...
[Leak {line: String secret \1708b0314f18f420d3fe8128652af43c\; //自己小程序的SECRET,line_number: 67,offender: secret \1708b0314f18f420d3fe8128652af43c\,commit: 410eb5a84408d3e63edb4d0975e5516e56f6ea6a,repo: ExpiryReminderAssistant,rule: Generic API Key,commit_message: submit code\n,author: sonichen,email: 1606673007qq.com,file: /backend/src/main/java/com/cyj/controller/login/WXLoginController.java,date: 2023-05-31 18:09:42 -08:00,},....Leak {line: secret: \c6e1180dda3eaca49f3d7ed912718e4d\ #小程序密钥,line_number: 36,offender: secret: \c6e1180dda3eaca49f3d7ed912718e4d\,commit: 410eb5a84408d3e63edb4d0975e5516e56f6ea6a,repo: ExpiryReminderAssistant,rule: Generic API Key,commit_message: submit code\n,author: sonichen,email: 1606673007qq.com,file: /backend/target/classes/application.yaml,date: 2023-05-31 18:09:42 -08:00,},
]
[WARN][2023-06-05 10:00:02]7 leaks detected. 1 commits scanned in 1.2538834sAPI 用法 运行以下命令启动 REST API
cargo run --bin apiAPI 文档位于 http://localhost:7000/swagger-ui/#
实现细节
整体的功能设计是模仿gitleakshttps://github.com/gitleaks/gitleaks。 本项目主要是应用gitleaks的正则表达式规则https://github.com/gitleaks/gitleaks/blob/master/config/gitleaks.toml对文本内容进行扫描。
首先通过git2 library获取到git仓库的文件内容过了白名单文件allowlist后再应用gitleaks的正则表达式规则对文本进行扫描如果文本中含有rule.keyword关键词就启动一个线程对文本进行正则表达式匹配。最后的结果支持在控制台直接输出或者以多种格式保存到本地。
其中应用了线程池的知识来提高开发效率
优化扫描单个文件的逻辑当遇到一个keyword的时候就启动一个线程用这个rule的正则表达式规则对内容进行扫描。遇到多个keyword则启动多个线程处理具体线程数量由用户输入决定。同时对多个文件内容进行扫描具体线程数量由用户输入决定。
关于API和API文档
Axum提供API用utoipa集成swagger提供API文档
总结
Sensleak 是一个强大的基于 Rust 的工具用于扫描 Git 仓库中的敏感数据。 它提供了增强的安全性、用户友好的界面和 REST API 功能。 利用并发扫描和批处理处理优化了扫描过程。 Sensleak 使用了 Rust、clap.rs、git2、axum 和 utoipa 技术。
希望大家多多支持多多star参与进来一直开发。 源代码https://github.com/open-rust-initiative/sensleak-rs