Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
talisman — 基于Git钩子的秘密扫描器,能够检测外发变更集中的令牌、密码和私钥,防止敏感数据被提交或推送到仓库。 | Kitploit
工具/GitHubGitHub/thoughtworks/talisman
静态分析代码分析DevSecOps秘密检测秘密检测 分类第 7 名
GitHubthoughtworks/talisman

talisman

基于Git钩子的秘密扫描器,能够检测外发变更集中的令牌、密码和私钥,防止敏感数据被提交或推送到仓库。

查看仓库
2.1k2522710个月前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
网站

Talisman

检测并防止机密被提交进入版本控制的工具

License: MIT Go Report Card contributions welcome Build Status

目录

  • 什么是Talisman?
  • 安装
    • 安装到路径(推荐方法)
    • 作为全局钩子模板安装
  • 配置项目
    • 与钩子框架一起使用
      • Pre-commit
      • Husky
    • 直接调用Talisman
  • 升级
  • Talisman实战
    • 验证
    • 忽略文件
      • 交互模式
      • 忽略特定检测器
      • 忽略特定关键词
      • 忽略同一类型的多个文件(使用通配符)
      • 通过指定语言范围忽略文件
      • 自定义搜索模式
    • 配置严重性阈值
    • 作为CLI工具使用Talisman
      • 交互模式
      • Git历史扫描器
      • 校验和计算器
  • Talisman HTML报告
    • 示例截图
  • 卸载
    • 从全局钩子模板卸载
    • 从单个仓库卸载
  • 为Talisman做贡献

什么是Talisman?

Talisman是一个扫描Git变更集的工具,确保潜在的机密或敏感信息不会离开开发者的工作站。

它验证即将推送的变更集中是否有看起来可疑的内容——例如潜在的SSH密钥、授权令牌、私钥等。

安装

Talisman支持macOS、Linux和Windows。

Talisman可以通过以下方式之一安装和使用:

  1. 作为独立可执行文件
  2. 作为Git钩子,以全局Git钩子模板和CLI工具(用于Git仓库扫描)的形式
  3. 作为Git钩子安装到单个Git仓库中

Talisman可以设置为Git仓库上的预提交或预推送钩子。

具体说明如下。

免责声明:通过强制推送进入Git仓库的机密无法被Talisman检测到。强制推送被认为本身存在风险,我们建议Git仓库管理员采取适当措施授权此类操作。

安装到路径(推荐方法)

我们推荐将talisman安装到路径中,以便git钩子框架和脚本可以使用。请从发布页面选择适合您系统的正确二进制文件,或运行我们的安装脚本:```bash bash -c "$(curl --silent https://raw.githubusercontent.com/thoughtworks/talisman/main/install.sh)"

或者设置环境变量 `INSTALL_LOCATION` 来指定二进制文件的自定义位置:```bash
INSTALL_LOCATION=/usr/local/bin bash -c "$(curl --silent https://raw.githubusercontent.com/thoughtworks/talisman/main/install.sh)"

或者设置环境变量 VERSION 为已发布的标签来安装特定版本::```bash VERSION=v1.36.0 bash -c "$(curl --silent https://raw.githubusercontent.com/thoughtworks/talisman/main/install.sh)"

或者在 Linux 上使用 linuxbrew,在 macOS 上使用 homebrew,在终端中运行以下命令:```bash
brew install talisman

作为全局钩子模板安装

我们提供的脚本可以将 Talisman 安装为 pre-commit git 钩子模板,这样 Talisman 不仅会出现在你现有的 git 仓库中,也会出现在你之后 'init' 或 'clone' 的任何新仓库中。

  1. 在终端中运行以下命令,以下载并将二进制文件安装至 $HOME/.talisman/bin

作为 pre-commit 钩子: ``` bash -c "$(curl --silent https://raw.githubusercontent.com/thoughtworks/talisman/main/global_install_scripts/install.bash)"

或

  作为预推送钩子:  ```
bash -c "$(curl --silent https://raw.githubusercontent.com/thoughtworks/talisman/main/global_install_scripts/install.bash)" -- pre-push
  1. 如果你没有在 $PATH 中设置 TALISMAN_HOME,系统会询问一个合适的位置来设置它。请选择你在机器上设置 profile 来源的选项数字。

记得对路径文件执行 source 命令或重启终端。 如果你选择稍后设置 $PATH,请将 TALISMAN_HOME=$HOME/.talisman/bin 导出到路径中。

  1. 选择一个基础目录,Talisman 将扫描该目录下的所有 git 仓库,并将 git 钩子(在步骤1中选择的 pre-commit 或 pre-push)设置为符号链接。 该脚本不会覆盖已有的钩子。如果你已有钩子,可以通过钩子框架添加 talisman
  • 你可以在执行安装前用基础目录的路径设置 SEARCH_ROOT 环境变量,这样在安装过程中就不需要手动输入了

配置项目

使用钩子框架

全局安装 talisman 作为钩子不会覆盖任何已有钩子。如果安装脚本发现已有钩子,它只会在控制台上进行提示。要运行多个钩子,我们建议使用钩子框架,例如 pre-commit 或 husky。这些说明假设 talisman 可执行文件已安装在你的系统路径中。

Pre-commit

使用 pre-commit 来管理与 Talisman 一起的已有钩子。在你的 .pre-commit-config.yaml 中引用我们的 pre-commit-hooks:```yaml

  • repo: https://github.com/thoughtworks/talisman rev: 'v1.32.2' # Update me! hooks:

    both pre-commit and pre-push supported

    - id: talisman-push

    • id: talisman-commit
### Husky

[husky](https://typicode.github.io/husky) 是一个用于管理 hooks 的 npm 模块。
将以下行添加到你的 `package.json` 中的 husky pre-commit 配置中:```
talisman --githook pre-commit

直接调用Talisman

一旦 安装 了Talisman可执行文件,就可以为某个Git仓库配置独立的pre-commit钩子:```bash cd my-git-project echo "talisman -g pre-commit" >> .git/hooks/pre-commit chmod +x .git/hooks/pre-commit

# 升级
自 v0.4.4 版本起,Talisman 会在钩子被调用时(按照设置,在 pre-commit/pre-push 时)<b>自动更新</b>二进制文件至最新版本。因此,您只需放松,无需额外操作即可持续使用最新版 Talisman。

可以设置以下环境变量:

1. TALISMAN_SKIP_UPGRADE:如果希望跳过自动升级检查,请设置为 true。默认值为 false。
2. TALISMAN_UPGRADE_CONNECT_TIMEOUT:升级取消前的最大连接超时时间(以秒为单位)。默认值为 10 秒。

如果您确实需要手动升级,以下是相关步骤:
<br>[推荐] 将 Talisman 二进制文件和钩子脚本更新至最新版本:```bash
curl --silent  https://raw.githubusercontent.com/thoughtworks/talisman/main/global_install_scripts/update_talisman.bash > /tmp/update_talisman.bash && /bin/bash /tmp/update_talisman.bash

仅通过执行以下命令更新Talisman二进制文件:```bash curl --silent https://raw.githubusercontent.com/thoughtworks/talisman/main/global_install_scripts/update_talisman.bash > /tmp/update_talisman.bash && /bin/bash /tmp/update_talisman.bash talisman-binary

# Talisman 运行效果

安装成功后,Talisman 会在每次提交(commit)或推送(push)之前自动检查明显的机密信息(根据安装时的选择)。如果检测到任何安全漏洞,talisman 将显示详细的错误报告:```bash
$ git push
Talisman Report:
+-----------------+-------------------------------------------------------------------------------+
|     FILE        |                                    ERRORS                                     |
+-----------------+-------------------------------------------------------------------------------+
| danger.pem      | The file name "danger.pem"                                                    |
|                 | failed checks against the                                                     |
|                 | pattern ^.+\.pem$                                                             |
+-----------------+-------------------------------------------------------------------------------+
| danger.pem      | Expected file to not contain hex encoded texts such as:                       |
|                 | awsSecretKey=c64e8c79aacf5ddb02f1274db2d973f363f4f553ab1692d8d203b4cc09692f79 |
+-----------------+-------------------------------------------------------------------------------+

在上面的例子中,文件 danger.pem 因以下原因被标记为安全违规:

  • 文件名与预配置的模式之一匹配。
  • 该文件包含一个 awsSecretKey,已被 Talisman 扫描并标记。

如果您将 Talisman 安装为预提交钩子 (pre-commit hook),它将仅扫描每个提交中的 差异。这意味着它只会报告文件中被更改部分存在的错误。

如果您将 Talisman 安装为预推送钩子 (pre-push hook),它将扫描发生更改的完整文件。如上所述,建议您将 Talisman 用作 预提交钩子。

验证

以下检测器会针对变更集执行,以检测机密/敏感信息:

  • 编码值 - 扫描 Base64、十六进制等编码的机密信息。
  • 文件内容 - 扫描文件中可能是潜在机密或密码的可疑内容。
  • 文件大小 - 扫描可能包含密钥或其他机密的大文件。
  • 熵值 - 扫描高熵内容,这些内容很可能包含密码。
  • 信用卡号 - 扫描可能是潜在信用卡号的内容。
  • 文件名 - 扫描可能表明文件包含机密的文件名和扩展名,例如密钥、凭据等。

忽略文件

下载工具