华人澳洲中文论坛

热图推荐

    敏感数据袒露,留给Git的时间只要20秒!

    [复制链接]

    2023-1-18 12:37:23 44 0

    dpjkuhlmny3.jpg

    dpjkuhlmny3.jpg


    作者 | codingwoman
    译者 | 布加迪
    策动 | 言征
    大家可能都会见临这样直冒冷汗的情景:在使用Git进行版本管制时不谨慎推送了首要的密钥或超大文件?要知道,在敏感数据地下袒露20秒后,再去删除这些密钥可能曾经为时太晚了!
    人非圣贤,孰能无过?本文会分享引见几个笔者在用的好技能,这样在Git时,不再用担惊受怕了。
    一、永久不要推送非须要的文件和信息
    Git中一类不需求的内容是十分大的文件。假如不谨慎提交了一个大文件到存储库,这确定会限度你拉取或推送文件所需的时间;假如文件大于100MB,乃至还会显示过错。
    其次,作为软件开发圈中的一员,这个忠告应该听过得多次:永久不要将秘密信息推送到存储库。具有芝麻粒大点资源的攻打者就能经过盗取泄漏的密文(secrets)和密钥来危及许多GitHub用户。但是,许多同行却对此不太当回事。
    因此,我想分享几个统计数据。
    我能进行另外一个提交后删除它吗?
    不。事实上,这比方才的那件事还要风险。不要无邪地认为,当他们从存储库中删除文件后,文件再也拜候不了。这恰是Git的用处所在。它会跟踪你的文件版本历史记载,以便你在想要恢复更改时能够恢复。
    经过下列列形式进行提交以删除文件,你无异于将网上的生疏人引向寄放密文的地位。
    $ git co妹妹it –m “Remove api key”1.
    只需你搜寻一下,就能看到这有多频繁。更明白地说,截止2023年1月5日笔者撰写这篇文章期间,在GitHub上搜寻查问“remove api key”,前往了100万+提交,查问“remove password”前往了735K+提交。

    l2zpxgopox2.jpg

    l2zpxgopox2.jpg


    跟着ChatGPT大行其道,人们试图编写Python脚原本试用它,我发现有数的OpenAI API密钥分布在GitHub的各个角落。
    这将诱发重大结果!
    二、那该怎么办?
    当咱们斟酌从Git历史记载中删除提交时,首先想到的是当即将分支的顶端更改成旧的提交。这使咱们平安地回到密钥不存在于存储库中的时分。
    1 $ git reset 2 $ git co妹妹it -am message 3 $ git push -f 1.2.3.1.但已有一段时间了,是不是为时太晚?
    好吧,假如你遇到的问题与大文件无关,老是能够使用git filter-branch从历史记载中删除过来的信息/文件。另外,还有一个极好极简略的办法,我经常使用它。
    见识一下BFG-Repo-Cleaner!这是一个用Scala编写的工具,能够删除大文件(好比预训练的模型或无奈抛弃的大PDF文件)或费事的blob(好比API密钥、明码和密文),其功用就像git filter-branch,但速度更快。
    GitHub的民间保举也倡议使用BFG-Repo-Cleaner来革除文件。
    阐明:我比来原告知git filter-branch已被弃用。当初能够使用git filter-repo或间接使用下面提到的BFG工具。
    2.能够松口吻了吗?
    不,还不克不及松口吻。固然,你能够随时使用这个工具删除大文件。但是,在将不用要的凭据推送到公共存储库以前,依然应该谨慎为宜。假如你比来在GitHub上泄漏了密文,应该尽快用下面提到的工具发出密文。
    此前,有一篇名为《Git会有多蹩脚?揭秘公共GitHub存储库中的密文泄漏》的论文初次片面深化剖析了GitHub上的密文泄漏。钻研人员在文中评价了两种不同的挖掘密文的办法:一种可以实时发现99%的新提交的含有密文的文件,另外一种利用了掩盖13%的公共存储库的大快照,其中一些能够追溯到GitHub创立时的快照。
    你以为大少数被发现的密钥都用于测试吗?好吧,告知你一个可怕的动静:钻研人员估量,一切发现的密文中89.10%是敏感信息。几个趋向:密文增加最显著的时分是在发现后的第一个小时,一切发现的密文中6%被移除。存在时间超过一天的密文往往长时间存在——第一天完结时,十二%以上的密文隐没了,而16天后,只要19%的密文隐没了。密文和文件被删除的速度大大超过代码库被删除的速度:用户没有删除代码库,而是创立新的提交以删除文件或密文。最初,最首要的论断是:发现GitHub上分享的密文的均匀时间为20秒摆布,从半秒到4分钟不等,密文在一天中的甚么时间被推送没有任何影响。所以在你不谨慎推送之后,留给你补救的时间,比想象的要少很多。三、结语GitHub应该对可能袒露密文的提交,实施严格很多的政策或反省。或者最少将新注册的帐户引到相应的阐明文档收回正告。笔者以为这关于刚开始踏上编程之旅的新人来讲尤其首要。开发人员(尤为是老手)应该知道如何平安地地下源代码,以及无视这么做可能面临的结果。
    如何能力防止不测提交?这里给出几点倡议:
    防止使用像git add.或git co妹妹it-a这样的catch-all命令,而是使用git add filename。独自暂存文件也能够更好地跟踪提交方面的更改。你老是能够在盛行的文本/源代码编纂器(好比Visual Studio Code)的源代码管制组件中使用暂存选项。一直查看你的文件更改。使用git diff--cached,亲密关注任务树上的变动。还有其余类型的工具能够帮忙你防止提交像git-secrets这样的密钥。你还能够使用预提交钩子。原文链接:http://www.codingwoman.com/git-the-good-the-bad-and-the-ugly/
    来源: 51CTO技术栈

    发表回复

    您需要登录后才可以回帖 登录 | 立即注册

    返回列表 本版积分规则

    :
    中级会员
    :
    论坛短信
    :
    未填写
    :
    未填写
    :
    未填写

    主题37

    帖子45

    积分213

    图文推荐