V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jqknono
V2EX  ›  程序员

开源博客的潜在信息泄露风险

  •  
  •   jqknono · 5 天前 · 4263 次点击

    常用的开源平台 GitHub Pages 比较受欢迎,其要求公开仓库才允许公开访问。但仓库公开后,一些标记为草稿的文章也可以从 Git 仓库访问到。

    开源博客可能会泄露个人信息,以下是一些常见的信息泄露关键词,欢迎评论补充。

    敏感词

    中文敏感词:

    • 密码
    • 账号
    • 身份证
    • 银行卡
    • 支付宝
    • 微信
    • 手机号
    • 家庭住址
    • 工作单位
    • 社保卡
    • 驾驶证
    • 护照
    • 信用卡

    英文关键词:

    • username
    • password
    • account
    • key
    • ini
    • credential
    • card
    • bank
    • alipay
    • wechat
    • passport
    • id
    • phone
    • address
    • company
    • jwt

    正则搜索:

    (密码|账号|身份证|银行卡|支付宝|微信|手机号|家庭住址|工作单位|社保卡|驾驶证|护照|信用卡|username|password|passwd|account|key\s*:|\.ini|credential|card|bank|alipay|wechat|passport|id\s*:|phone|address|company|jwt)
    

    如果使用 VSCode 作为博客编辑器,可以使用正则搜索快速进行全站搜索,检查可能泄露信息的位置。

    Git 历史

    Git 历史可能包含信息泄露,通过简单的脚本即可扫描开源博客的历史提交信息。

    如果是自己的仓库,可以通过以下方式清除历史。如果需要保留历史信息,则不要清除。

    请务必确认理解命令含义,谨慎操作,操作前请备份重要数据。

    git reset --soft ${first-commit}
    git push -f
    
    43 条回复    2024-11-13 22:57:02 +08:00
    deplives
        1
    deplives  
       5 天前
    还好我的主仓库是私有的
    lazyyz
        2
    lazyyz  
       5 天前
    确实需要注意隐私安全
    mouyase
        3
    mouyase  
       5 天前
    建议把仓库设置为私有
    googlefans
        4
    googlefans  
       5 天前
    文章中为啥要留下这些敏感个人信息呢
    littlewing
        5
    littlewing  
       5 天前
    为什么要把这些信息 commit 到 git 仓库呢
    jqknono
        6
    jqknono  
    OP
       5 天前
    @googlefans 比如技术博客分享的脚本
    jqknono
        7
    jqknono  
    OP
       5 天前
    @littlewing 被提交到 git 的除了 feature 还有 bug
    lry
        8
    lry  
       5 天前   ❤️ 1
    还好我用的是 private repo + cloudflare page
    coolcoffee
        9
    coolcoffee  
       5 天前
    楼上 cloudflare page 是一种方式,通过私有仓库 action build 到公开仓库也是一种方式。

    当然最直接的还是付费 Github Pro ,直接支持私有仓库发布 Pages 。
    ryan4yin
        10
    ryan4yin  
       5 天前
    可以用一些脚本辅助,但最主要的还是自己要养成良好的安全习惯,写博客时自己就应该时刻注意这些。
    Irilsy
        11
    Irilsy  
       5 天前
    原来 github page 必须得公开仓库吗,还是学生一直都有学生包,完全没意识到。
    SculptureSand
        12
    SculptureSand  
       5 天前 via Android   ❤️ 1
    刚好最近刷到一个专门用于检测密钥泄漏的项目
    https://github.com/trufflesecurity/trufflehog
    cosette
        13
    cosette  
       5 天前   ❤️ 8
    公开仓库的 force push 没用,GitHub 有 activity (看网页的右侧边栏),我觉得可能很多人都没注意到这个功能,你的每一次最近操作都会存档。

    如果真的不小心推送了敏感信息,应该联系 GitHub 客服处理,不要觉得重置了 commit history 就万事大吉了,GitHub 不止是 git 。
    cosette
        14
    cosette  
       5 天前   ❤️ 1
    如果使用 hugo 等静态博客系统,一种折中的方案是本地编译后把 public 文件夹内的产物上传到 GitHub 即可,这个 public 默认不会包括 drafts 。
    Int100
        15
    Int100  
       5 天前
    GitHub Pages 必须公开仓库????

    我这从来都是 private repo ,一样用啊
    Int100
        16
    Int100  
       5 天前
    GitHub Pro 可以解决这个问题
    imgradeone
        17
    imgradeone  
       5 天前 via Android
    @Irilsy 具体来说是,私库要开 GitHub Pages 就必须开 GitHub Pro ,学生包刚好有 Pro 的功能
    liuidetmks
        18
    liuidetmks  
       5 天前 via iPhone
    一般是把 html 和 markdown 分为两个仓库
    bruce0
        19
    bruce0  
       4 天前
    我都是两个仓库, page 用一个 public 的仓库, 我自己写 Markdown 的在一个 private 仓库,通过 ci 自动发布到 public 的仓库
    jqknono
        20
    jqknono  
    OP
       4 天前 via Android
    @cosette 我还不知道这个,感谢
    lisxour
        21
    lisxour  
       4 天前
    pages 就不是这么给你们玩的
    gpt5
        22
    gpt5  
       4 天前
    充值即可
    E263AFF275EE4117
        23
    E263AFF275EE4117  
       4 天前
    @liuidetmks @bruce0 我在思考一个问题,就是说 Markdown 在私有仓库,页面的 Page 发布到公开仓库,否可以通过克隆你 Page 的公开仓库,从而把已发布的 Page 页面搬迁到我的站点去,从而使得你之前编辑的文档博客,我自己也能发布一份,从而窃取你的知识内容。
    但是我也进入一个悖论,及时我通过 GitHubPro 的私有仓库发布的 Page 页面,在互联网上也是公开的,不存在说知识内容的不可见。只是一个区别,我的 Git 提交的 history 历史记录对外不可见。
    gledos
        24
    gledos  
       4 天前
    @lisxour You can use GitHub Pages to showcase some open source projects, host a blog, or even share your résumé.

    GitHub 官网是这么说的: https://docs.github.com/en/pages/quickstart
    BadFox
        25
    BadFox  
       4 天前
    hexo 的做法好像是本地渲染成 html 再上传。
    BadFox
        26
    BadFox  
       4 天前
    @E263AFF275EE4117 偷文章的情况很常见的,独立 blog 经常碰到这种情况。
    jqknono
        27
    jqknono  
    OP
       4 天前   ❤️ 1
    @E263AFF275EE4117 写博客就是为了分享, 一起讨论成长, 不要吝惜自己的知识, 我写这篇就是觉得这么点关键词远远不够, 在评论里学到了很多. 多数时候个人的知识肯定比不上群体的知识, 把自己有限的知识当作珍宝只会变得狭隘. 更何况天下文章一大抄, 又有几篇是原创.
    ifwww
        28
    ifwww  
       4 天前
    直接把源码推到私有仓库然后用 vercel 自动云端渲染就好
    lambdaq
        29
    lambdaq  
       4 天前
    @cosette activity 只有摘要没有详细信息。。。。吧?


    @BadFox 那本地这一份丢了就麻烦了。
    cosette
        30
    cosette  
       4 天前
    @lambdaq 点右边三个点,看 compare changes ,这个功能跟本地的 reflog 有点类似,不过似乎不会保留全部的记录,有时间限制。
    Libby520
        31
    Libby520  
       4 天前   ❤️ 1
    我刚刚把几年前的东西全新部署了一个博客,用的是开源的 Textpattern ,不知道有没用你说的风险
    http://www.dutype.com/
    lambdaq
        32
    lambdaq  
       4 天前
    @cosette 啊这。我好像记起来了,的确 github 有 reflog 删不干净的问题 。只要 sha1 被人记下了就永远在。。
    bruce0
        33
    bruce0  
       4 天前
    @E263AFF275EE4117 不同克隆我的 page 仓库都能窃取内容, 直接用爬虫爬我的博客就行, 怎么说呢, 能分享出来的东西就不怕别人窃取, 如果爬被别人窃取的东西就别分享出来.

    我最烦的就是 自己写一篇文章, 还要关注公众号才能阅读全文, 虽然说这是他的权利,就是有点烦人,还不如直接付费阅读算了
    jqknono
        34
    jqknono  
    OP
       4 天前
    @Libby520 很文艺的博客, 文笔挺好, 很久没看这样的文章了
    dfkjgklfdjg
        35
    dfkjgklfdjg  
       4 天前
    之前在考虑自动部署的时候就考虑到了,所以没有用单仓库自动部署的方式。
    而是一个私有仓库来管理 md 文件,私有仓库推送时自动编译在把编译的 SSG 产物同步到公共仓库,来更新 Github Pages 的形式。
    E263AFF275EE4117
        36
    E263AFF275EE4117  
       4 天前
    @jqknono @bruce0 好的,谢谢,思维认知又提高了一点。是的,我写博客的知识内容也是从互联网获取的,一方面是自己的知识储备,另一方面也是分享传播。目前就在写博客的时候尽量避免自己暴露敏感信息,毕竟互联网上是我们能做的最多是防君子不防小人的。
    fengpan567
        37
    fengpan567  
       4 天前
    之前公司的测试同时把 aws 的秘钥传到 github 上,被刷了十几万
    windcode
        38
    windcode  
       4 天前
    我是这么玩的:blog repo 设置为 private + vercel 自动发布新内容,其中还没准备好的内容通过类似 draft: true 这样的 markdown frontmatter 控制是否公开。
    博客文章内容编辑使用 Obsidian 或者 Cursor ,这样 写博客和记笔记 的行为就完全一致,只不过写博客多了个将 draft: true 去掉的步骤。
    xcsoft
        39
    xcsoft  
       4 天前
    还好我是 Vercel + Bitbucket
    lveye
        40
    lveye  
       4 天前
    有个简单的方案可以解决这个问题:利用 git Hooks 脚本机制,预提交钩子( pre-commit ):可以检查代码规范,禁止提交不合格代码。比如下边这样,vi .git/hooks/pre-commit
    ```
    #!/bin/sh

    # 检查是否有不符合正则的代码
    invalid_code=$(git diff --cached --name-only --diff-filter=ACM | grep '\.go$' | xargs -I {} grep -Hn -E "不允许的正则" {})

    if [ -n "$invalid_code" ]; then
    echo "提交失败:发现不符合要求的代码"
    echo "$invalid_code"
    exit 1 # 返回非零状态,阻止提交
    fi

    exit 0 # 返回零状态,允许提交
    ```
    Songxwn
        41
    Songxwn  
       4 天前
    Github 私有仓库+ cloudflare
    BadFox
        42
    BadFox  
       4 天前
    @lambdaq #29 fun fact:我的 hexo 整个文件夹都在 onedrive 里面,编译渲染都是从里面做。
    jqtmviyu
        43
    jqtmviyu  
       4 天前
    我是 hugo markdown 在私有仓库, action 发布到公开仓库. 没这个问题.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2743 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 00:34 · PVG 08:34 · LAX 16:34 · JFK 19:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.