返回

Git 代码提交安全卫士:强强联合,拦截敏感词,打造无忧代码王国

前端

敏感词潜伏!守护代码安全的利器:Husky 和 Commitlint

在日益增长的网络安全威胁面前,保护我们的代码免受恶意攻击至关重要。Git,作为代码管理的利器,却可能成为敏感词潜伏的温床,危及公司机密和代码审查效率。

敏感词的危害

敏感词,如同暗藏的定时炸弹,轻则扰乱代码管理,重则泄露机密,给企业带来毁灭性后果:

  • 泄露公司机密: 敏感词泄露可能导致公司机密信息外泄,造成难以挽回的损失。
  • 污染代码管理: 敏感词大量堆积,占用宝贵空间,影响代码管理效率。
  • 阻碍代码审查: 敏感词干扰代码审查过程,掩盖真实代码问题。
  • 违反安全合规: 敏感词的存在可能违反安全合规要求,给企业带来法律风险。

拦截敏感词的利器

面对敏感词的威胁,我们有两位得力助手:Husky 和 Commitlint。

  • Husky: Git 钩子管理工具,在提交前实施代码检查。
  • Commitlint: 代码提交规范检查工具,确保提交信息符合预定义规则。

实战指南

让我们携手 Husky 和 Commitlint,构建代码提交安全防线:

1. 安装:

# 安装 Husky
npm install husky -g

# 安装 Commitlint
npm install commitlint -g

2. 配置 Husky 钩子:

# 创建 .husky 目录
mkdir .husky

# 添加 pre-commit 文件
touch .husky/pre-commit

# 编辑 pre-commit 文件
vim .husky/pre-commit

# 添加如下内容:
#!/bin/sh
npx commitlint --edit

3. 配置 Commitlint:

# 创建 .commitlintrc.json 文件
touch .commitlintrc.json

# 编辑 .commitlintrc.json 文件
vim .commitlintrc.json

# 添加如下内容:
{
  "extends": ["@commitlint/config-conventional"],
  "rules": {
    "scope-enum": [
      2,
      "always",
      ["feat", "fix", "docs", "style", "refactor", "test", "chore"]
    ],
    "subject-max-length": [2, "always", 72],
    "body-max-line-length": [2, "always", 100]
  }
}

4. 添加敏感词规则:

# 编辑 .commitlintrc.json 文件
vim .commitlintrc.json

# 添加如下规则:
{
  "rules": {
    "no-sensitive-words": [
      2,
      "always",
      [
        "password",
        "secret",
        "token",
        "key",
        "certificate"
      ]
    ]
  }
}

5. 测试:

# 尝试提交包含敏感词的代码
git commit -m "This is a commit with a sensitive word"

# Husky 将阻止提交,并显示 Commitlint 错误消息

代码安全,永无止境

代码安全是一个持续的过程,需要不断的关注和改进。随着技术的进步,安全威胁也在不断演变,因此我们必须保持警惕,不断探索新的安全技术和最佳实践。

常见问题解答

1. 为什么需要拦截敏感词?
敏感词泄露可能导致公司机密外泄、污染代码管理、阻碍代码审查,甚至违反安全合规要求。

2. Husky 和 Commitlint 如何协作?
Husky 在提交前触发代码检查,而 Commitlint 则检查提交信息是否符合预定义规则,包括敏感词过滤。

3. 如何添加自定义敏感词?
编辑 .commitlintrc.json 文件中的 "no-sensitive-words" 规则,添加您希望拦截的自定义敏感词。

4. 如何处理误报?
如果 Commitlint 错误地将非敏感词标记为敏感词,可以调整 "no-sensitive-words" 规则中的正则表达式,或使用 "ignore-commit-message" 规则。

5. 如何持续监控代码安全?
定期审查代码提交信息,使用安全扫描工具,并遵循安全最佳实践,以持续监控代码安全。