开源博客的潜在信息泄露风险 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
jqknono
V2EX    程序员

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

  •  
  •   jqknono 2024-11-12 18:34:14 +08:00 5587 次点击
    这是一个创建于 378 天前的主题,其中的信息可能已经有所发展或是发生改变。

    常用的开源平台 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  
       2024-11-12 18:37:05 +08:00
    还好我的主仓库是私有的
    lazyyz
        2
    lazyyz  
       2024-11-12 18:42:32 +08:00
    确实需要注意隐私安全
    mouyase
        3
    mouyase  
       2024-11-12 18:48:17 +08:00
    建议把仓库设置为私有
    googlefans
        4
    googlefans  
       2024-11-12 19:18:20 +08:00
    文章中为啥要留下这些敏感个人信息呢
    littlewing
        5
    littlewing  
       2024-11-12 19:43:28 +08:00
    为什么要把这些信息 commit 到 git 仓库呢
    jqknono
        6
    jqknono  
    OP
       2024-11-12 20:09:17 +08:00
    @googlefans 比如技术博客分享的脚本
    jqknono
        7
    jqknono  
    OP
       2024-11-12 20:10:06 +08:00
    @littlewing 被提交到 git 的除了 feature 还有 bug
    lry
        8
    lry  
       2024-11-12 23:38:36 +08:00   1
    还好我用的是 private repo + cloudflare page
    coolcoffee
        9
    coolcoffee  
       2024-11-13 00:01:00 +08:00
    楼上 cloudflare page 是一种方式,通过私有仓库 action build 到公开仓库也是一种方式。

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

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

    我这从来都是 private repo ,一样用啊
    Int100
        16
    Int100  
       2024-11-13 06:37:54 +08:00
    GitHub Pro 可以解决这个问题
    imgradeone
        17
    imgradeone  
       2024-11-13 07:21:55 +08:00 via Android
    @Irilsy 具体来说是,私库要开 GitHub Pages 就必须开 GitHub Pro ,学生包刚好有 Pro 的功能
    liuidetmks
        18
    liuidetmks  
       2024-11-13 08:15:44 +08:00 via iPhone
    一般是把 html 和 markdown 分为两个仓库
    bruce0
        19
    bruce0  
       2024-11-13 09:17:15 +08:00
    我都是两个仓库, page 用一个 public 的仓库, 我自己写 Markdown 的在一个 private 仓库,通过 ci 自动发布到 public 的仓库
    jqknono
        20
    jqknono  
    OP
       2024-11-13 09:24:17 +08:00 via Android
    @cosette 我还不知道这个,感谢
    lisxour
        21
    lisxour  
       2024-11-13 09:25:04 +08:00
    pages 就不是这么给你们玩的
    gpt5
        22
    gpt5  
       2024-11-13 09:34:13 +08:00
    充值即可
    E263AFF275EE4117
        23
    E263AFF275EE4117  
       2024-11-13 09:39:00 +08:00
    @liuidetmks @bruce0 我在思考一个问题,就是说 Markdown 在私有仓库,页面的 Page 发布到公开仓库,否可以通过克隆你 Page 的公开仓库,从而把已发布的 Page 页面搬迁到我的站点去,从而使得你之前编辑的文档博客,我自己也能发布一份,从而窃取你的知识内容。
    但是我也进入一个悖论,及时我通过 GitHubPro 的私有仓库发布的 Page 页面,在互联网上也是公开的,不存在说知识内容的不可见。只是一个区别,我的 Git 提交的 history 历史记录对外不可见。
    gledos
        24
    gledos  
       2024-11-13 09:43:41 +08:00
    @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  
       2024-11-13 09:48:15 +08:00
    hexo 的做法好像是本地渲染成 html 再上传。
    BadFox
        26
    BadFox  
       2024-11-13 09:49:25 +08:00
    @E263AFF275EE4117 偷文章的情况很常见的,独立 blog 经常碰到这种情况。
    jqknono
        27
    jqknono  
    OP
       2024-11-13 09:50:43 +08:00   1
    @E263AFF275EE4117 写博客就是为了分享, 一起讨论成长, 不要吝惜自己的知识, 我写这篇就是觉得这么点关键词远远不够, 在评论里学到了很多. 多数时候个人的知识肯定比不上群体的知识, 把自己有限的知识当作珍宝只会变得狭隘. 更何况天下文章一大抄, 又有几篇是原创.
    ifwww
        28
    ifwww  
       2024-11-13 10:11:28 +08:00
    直接把源码推到私有仓库然后用 vercel 自动云端渲染就好
    tf2
        29
    tf2  
       2024-11-13 10:25:20 +08:00
    @cosette activity 只有摘要没有详细信息。。。。吧?


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

    我最烦的就是 自己写一篇文章, 还要关注公众号才能阅读全文, 虽然说这是他的权利,就是有点烦人,还不如直接付费阅读算了
    jqknono
        34
    jqknono  
    OP
       2024-11-13 10:50:03 +08:00
    @Libby520 很文艺的博客, 文笔挺好, 很久没看这样的文章了
    94
        35
    94  
       2024-11-13 11:33:26 +08:00
    之前在考虑自动部署的时候就考虑到了,所以没有用单仓库自动部署的方式。
    而是一个私有仓库来管理 md 文件,私有仓库推送时自动编译在把编译的 SSG 产物同步到公共仓库,来更新 Github Pages 的形式。
    E263AFF275EE4117
        36
    E263AFF275EE4117  
       2024-11-13 11:35:23 +08:00
    @jqknono @bruce0 好的,谢谢,思维认知又提高了一点。是的,我写博客的知识内容也是从互联网获取的,一方面是自己的知识储备,另一方面也是分享传播。目前就在写博客的时候尽量避免自己暴露敏感信息,毕竟互联网上是我们能做的最多是防君子不防小人的。
    fengpan567
        37
    fengpan567  
       2024-11-13 15:06:58 +08:00
    之前公司的测试同时把 aws 的秘钥传到 github 上,被刷了十几万
    windcode
        38
    windcode  
       2024-11-13 15:35:15 +08:00
    我是这么玩的:blog repo 设置为 private + vercel 自动发布新内容,其中还没准备好的内容通过类似 draft: true 这样的 markdown frontmatter 控制是否公开。
    博客文章内容编辑使用 Obsidian 或者 Cursor ,这样 写博客和记笔记 的行为就完全一致,只不过写博客多了个将 draft: true 去掉的步骤。
    xcsoft
        39
    xcsoft  
       2024-11-13 16:30:52 +08:00
    还好我是 Vercel + Bitbucket
    lveye
        40
    lveye  
       2024-11-13 16:57:56 +08:00
    有个简单的方案可以解决这个问题:利用 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 # 返回零状态,允许提交
    ```
    bigmomo
        41
    bigmomo  
       2024-11-13 17:08:08 +08:00
    Github 私有仓库+ cloudflare
    BadFox
        42
    BadFox  
       2024-11-13 17:14:44 +08:00
    @lambdaq #29 fun fact:我的 hexo 整个文件夹都在 onedrive 里面,编译渲染都是从里面做。
    jqtmviyu
        43
    jqtmviyu  
       2024-11-13 22:57:02 +08:00
    我是 hugo markdown 在私有仓库, action 发布到公开仓库. 没这个问题.
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5779 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 01:57 PVG 09:57 LAX 17:57 JFK 20:57
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86