1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        翻車了!pyc 文件居然曝光了我的密碼

        共 1848字,需瀏覽 4分鐘

         ·

        2020-06-03 23:22

        點擊上方Python知識圈設(shè)為星標

        回復(fù)1024獲取Python資料


        f7f0acae56a658779654863417819d1d.webp


        譯者:穆勝亮
        英文原文:https://blog.jse.li/posts/pyc/

        閱讀文本大概需要 3 分鐘


        點擊「閱讀原文」查看pk哥原創(chuàng)精品視頻。

        當(dāng)你第一次導(dǎo)入Python文件時,Python解釋器將編譯該文件并將產(chǎn)生的字節(jié)碼緩存到.pyc文件中,這樣以后導(dǎo)入時就避免了再解析或編譯代碼產(chǎn)生新的開銷。

        對于Python項目來說,將配置、密鑰和密碼(統(tǒng)稱為“機密”)存儲在名為secret.py,config.py或者settings.py之類的gitignored Python文件中也是一種常見的實踐,這些機密信息在項目的其他部分導(dǎo)入使用。這在機密信息和源代碼之間提供了一個很好的分離,在大多數(shù)情況下,這種設(shè)置工作得很好。而且由于它復(fù)用了語言的導(dǎo)入機制,這些項目不必在文件I/O或JSON之類的格式上浪費時間。

        但是在這種模式快速且方便的同時,它也可能是不安全的。因為它重用了語言的導(dǎo)入機制(該機制有創(chuàng)建和緩存.pyc文件的習(xí)慣),所以這些機密也存在于編譯的字節(jié)碼中!使用GitHub API進行的一些初步研究顯示,數(shù)千個GitHub代碼倉庫的字節(jié)碼中隱藏著機密。

        用于在代碼倉庫中查找機密的現(xiàn)有工具(我最喜歡的是trufflehog)跳過了像.pyc這樣的二進制文件,而是只掃描純文本文件,如源代碼或配置文件。

        緩存來源的速成課程

        Python的早期版本將這些文件存儲在原始源文件旁邊,但是從Python 3.2開始,這些文件都位于導(dǎo)入模塊根目錄的一個名為pycache的文件夾中。

        假設(shè)我們有一個包含下面密碼的Python文件:

        95850aaae08816807d5ee666925dab41.webp

        這行代碼的字節(jié)碼是這樣的:

        401d90f80def871678669fbf5cd1dc66.webp

        注意,變量名和字符串是完全復(fù)制的!而且,Python字節(jié)碼通常包含足夠的信息來恢復(fù)代碼的原始結(jié)構(gòu)。像uncompyle6這樣的工具可以將.pyc文件轉(zhuǎn)換回它們的原始形式。

        0788a7ba620849adc7bcc8e91958c72a.webp

        緩存泄漏機密

        為了調(diào)查這個問題到底有多普遍,我編寫了一個簡短的腳本來搜索GitHub上的.pyc文件并對其進行反編譯以尋找秘密。最后我找到了數(shù)千個Twitter密鑰、條帶標記、AWS證書和社交媒體密碼。我通知了被我用這種方式破解密鑰的相關(guān)機構(gòu)。

        e59c48df6690db31c3f60598dbe0cee2.webp

        額外說明

        緩存的字節(jié)碼是一種底層的內(nèi)部性能優(yōu)化,Python的這種優(yōu)化為我們帶來了方便!如果沒有像反匯編或反編譯這樣的特殊工具,.pyc文件的內(nèi)容是難以理解的。當(dāng)這些文件被隱藏在pycache(雙下劃線代表僅供內(nèi)部使用)中時,它們很容易被忽視。許多文本編輯器和IDE將這些文件夾和文件從源代碼目錄樹中隱藏起來,以避免弄亂屏幕,從而很容易忘記它們的存在。

        也就是說,對于一個有經(jīng)驗的程序員來說,無意中泄漏他們的機密是很容易的,而且初學(xué)者更容易犯這樣的錯誤。要避免這種情況,要么需要有足夠的gitignore知識,要么需要對git和Python內(nèi)部有一定的了解。

        你可以做的事情:

        • 在你的代碼倉庫中查找松散的.pyc文件,并刪除它們

        • 如果你有.pyc文件并且它們包含機密,那么可以撤銷和輪換你的機密

        • 使用標準的gitignore來防止檢入.pyc文件

        • 使用JSON文件或環(huán)境變量進行配置





        2feffc01dcd49a6c65249613fbde356e.webp
        -----------------------公眾號:Python知識圈博客:www.pyzhishiquan.com知乎Python知識圈微信視頻號:菜鳥程序員 (分享有趣的編程技巧、Python技巧)bilibili:菜鳥程序員的日常(目前原創(chuàng)視頻:16,累計播放量:55萬)

        
         

        一個學(xué)習(xí)Python的人,喜歡分享,喜歡搞事情!

        長按下圖二維碼關(guān)注,和你一起領(lǐng)悟Python的魅力。

        
         
        
         
        
         


        
         


        Python知識圈公眾號的交流群已經(jīng)建立,群里可以領(lǐng)取 Python 和人工智能學(xué)習(xí)資料,大家可以一起學(xué)習(xí)交流,效率更高,如果是想發(fā)推文、廣告、砍價小程序的敬請繞道!一定記得備注「交流學(xué)習(xí)」,我會盡快通過好友申請哦!通過好友后私聊我「學(xué)習(xí)資料」或者「進群」都可以。

        掃碼添加,備注:交流學(xué)習(xí)




        往期推薦01

        公眾號所有文章匯總導(dǎo)航(2-10更新)

        02

        玩會這 15 款編程游戲,就算是入門了!

        03

        我用Python一鍵保存了半佛老師所有的騷氣表情包


        我就知道你“在看” fa91cbd381515336c2aab74222d11cb5.webp
        瀏覽 140
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            楼梯大尺度做爰视频 | 女同互慰av网站 女女强制h百合调教gl在线看 | 丁香五月激情免费视频 | 朱珠大尺度做爰未删减 | 有希子好紧好大好爽 | 小泽彻av全部作品 | 操大逼网站| 操逼极品骚货网站观看 | 欧美大鸡巴网 | 操逼网站大全 |