最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python源碼中明文賬密的掃描、攔截與加密處理實例代碼

 更新時間:2026年03月21日 08:42:36   作者:24K純學(xué)渣  
在現(xiàn)代互聯(lián)網(wǎng)時代,數(shù)據(jù)的安全性是至關(guān)重要的,為了保護數(shù)據(jù)的完整性和保密性,人們通常會對敏感數(shù)據(jù)進行加密,這篇文章主要介紹了Python源碼中明文賬密的掃描、攔截與加密處理的相關(guān)資料,需要的朋友可以參考下

概要

由于Python是一種解釋型語言,一般以*.py的方式發(fā)布、運行,源碼容易被查看和修改,尤其是涉及鑒權(quán)相關(guān)的信息,不小心泄露出去就會造成信息安全風(fēng)險。基于已有的實踐經(jīng)驗,本文主要介紹:

  1. Python項目中存量明文賬號/密碼的掃描;
  2. Patch級敏感信息CI/CD攔截策略;
  3. Python敏感模塊的加密處理方法;

上述三個問題,總結(jié)實踐經(jīng)驗,記錄于此,為有需要的同學(xué)提供參考。

存量敏感信息的掃描

存量敏感信息一般分為兩類:1、明文賬號密碼;2、明文Token。在Python中一般都是以字符串的形式明文寫在代碼里,相較于前者,后者一般長度更長、信息熵更高。在大型的Python項目中,一般是多人協(xié)同開發(fā),如果明文提交到git倉庫,或者直接部署在生產(chǎn)環(huán)境,會導(dǎo)致系統(tǒng)安全問題且不利于系統(tǒng)維護。下面提供兩種開源的方案(Gitleaks 和 TruffleHog),來掃描存量的明文賬密/Token。

參考文檔:
https://github.com/gitleaks/gitleaks
https://zhuanlan.zhihu.com/p/672246664
https://blog.csdn.net/gitblog_00008/article/details/137004093
https://github.com/trufflesecurity/truffleHog
https://www.anquanke.com/post/id/281052#h2-0

Gitleaks

Gitleaks是一個開源的Git倉庫敏感信息掃描工具,非常適合用來檢測git倉庫中提交的硬編碼密碼、API Token等,其最大的特點是:

  • 與主流的git、github、gitee、gerrit、gitlab等VCS管理系統(tǒng)兼容較好,支持by Patch掃描,并能過濾出對應(yīng)的Patch owner,便于定責(zé)整改;
  • 支持普通文件夾掃描,掃描結(jié)果支持導(dǎo)出為json/csv文件;
  • 官方集成了主流Token(aliyun、aws、google、facebook、rsa私鑰等)的掃描規(guī)則,可以直接拿來用,也支持自定義掃描規(guī)則(傳入正則表達式);
  • 支持基線掃描;

官方提供了幾大主流平臺的二進制文件,可以直接下載使用,也開源了Go源碼,有條件的也可以編譯使用。
在使用時是可以通過分析存量明文賬密/Token的coding規(guī)律,提煉出一個通用的正則表達式,然后掃描整個倉庫,導(dǎo)出明文密碼列表。
如不便從官方渠道(Github)下載,文末提供已經(jīng)下載好的二進制文件,供有需要的兄弟拿去用。

下面提供一個使用示例:

  1. by Patch掃描,輸出信息攜帶Patch Owner,導(dǎo)出為json文件
    –source::為git倉庫路徑
    –report-path:為導(dǎo)出的敏感文件路徑
    –log-opts=“–since=7.days.ago”,僅分析最近7天的commit diff
gitleaks detect --source=. \
                --log-opts="--since=7.days.ago" \
                --report-format=json \
                --report-path=leaks_report.json
  1. 掃描普通目錄,導(dǎo)出為csv報告
    注意:按照非git方式掃描,無法讀取author信息
gitleaks detect --source="C:/my-project" \
                --report-format=csv \
                --report-path="secrets_report.csv" \
                --verbose
  1. 指定自定義規(guī)則
    注意:–config選項不傳參數(shù)時,默認會啟用常見服務(wù)的檢測規(guī)則(如 AWS Access Key、Google API Key、Aliyun Secret、SSH Private Key 等)。
    假設(shè)自定義掃描規(guī)則的文件內(nèi)容如下:
title = "Custom Gitleaks Config"

[[rules]]
id = "aliyun-access-key-custom"
description = "Detect Aliyun Access Key"
regex = '''(LTAI[0-9a-zA-Z]{20})'''
secretGroup = 1
entropy = 3.0
keywords = ["LTAI"]

[[rules]]
id = "private-key-custom"
description = "Detect RSA/DSA Private Key"
regex = '''-----BEGIN (RSA|DSA|EC) PRIVATE KEY-----'''
keywords = ["BEGIN PRIVATE KEY"]

自定義掃描規(guī)則保存到toml文件中,

gitleaks detect --source=. \
                --config=custom-config.toml \
                --report-path=custom_rules_report.json
  1. 指定基線掃描,比較適合用在大型項目的檢測邏輯中
# 先生成基線文件
gitleaks detect --source=. \
                --report-format=json \
                --report-path=baseline.json
# 后續(xù)掃描時基于該基線,只掃描增量的新漏洞即可
gitleaks detect --source=. \
                --baseline-path=baseline.json \
                --report-path=new_leaks.json

掃描出來的json文件效果:

TruffleHog

TruffleHog是一個開源的Python項目,功能與Gitleaks類似,主要特點或相對的gitleaks的區(qū)別是:

  • 可以直接pip安裝使用,需要注意的是,如果Python版本過低,pip安裝TruffleHog可能存在版本兼容性問題,不推薦使用,更推薦直接用編譯好的二進制文件做檢查;
  • 基于“熵值 + 正則”識別潛在密鑰,并支持主動驗證(verification) 是否真實有效(如調(diào)用 API 測試 key 是否可用);
  • 強大的誤報過濾能力:通過網(wǎng)絡(luò)請求驗證發(fā)現(xiàn)的密鑰是否“可被使用”,大幅降低誤報率;
  • 與Gitleaks類似,它也支持通過配置文件添加自定義 detector(需 protobuf ID 或名稱),但不如 Gitleaks 的 TOML 規(guī)則直觀,例如設(shè)置最小的匹配長度,忽略特定的文件/目錄;
  • TruffleHog更適合DevOps系統(tǒng),能直接接入到CI/CD業(yè)務(wù)流,非常適合Patch級的檢查;

相對于Gitleaks,TruffleHog更適合集成到CI/CD系統(tǒng)中,做增量式的敏感信息檢查,但是存量的明文賬密檢查,從使用效果上來看,gitleaks更勝一籌。不過需要注意的是:有些基于Gerrit的VCS,在每筆Patch中會打上Change-ID,此時這種hash字符串,也會被TruffleHog檢測出來,因此需要維護一個特定的白名單,避免檢測誤報。

下面提供一個簡單的使用示例:
掃描本地項目目錄中的敏感信息:

trufflehog filesystem ./my-project \
            --json \
            --only-verified

輸出效果:

{
  "SourceMetadata": {
    "data": { "File": "deploy.sh", "Line": 10 },
    "encoding": "plain"
  },
  "DetectorName": "AWS",
  "Verified": true,
  "Raw": "AKIAIOSFODNN7EXAMPLE",
  "Redacted": "AKIAIOSFODNN7EXXX",
  "ExtraData": {"email": ""}
}

CI/CD前置攔截

存量的密碼掃描只能解決歷史遺留的漏洞,實際在項目開發(fā)中,治理完存量的硬編碼鑒權(quán)信息,一般需要在Patch合入遠程倉庫前,在CI/CD流程中提前攔截,未雨綢繆。這里也提供下面兩個思路。

傳統(tǒng)掃描策略

傳統(tǒng)的掃描策略是指,掃描Patch中所有的文本文件,借助開源工具或自定義的掃描規(guī)則攔截高信息熵字段和潛在的硬編碼字符。這種攔截方式能直接借助上述的開源工具的能力來實施,但是缺陷也是很明顯,這種攔截機制比較“死板”,如果有人特地提交了不能被正則表達式匹配到的明文賬密(例如,把password 變量名全部改成candy,正則表達式就匹配不到password相關(guān)的字段),此時就會漏檢。即這種攔截規(guī)則不能智能化地“進化”,需要定期維護攔截規(guī)則。

下面提供一份Gitleaks+TruffleHog協(xié)同部署在DevOps系統(tǒng)的業(yè)務(wù)流:

AI大模型攔截策略

在自然語言處理(NLP)領(lǐng)域,大型語言模型(Large Language Models, LLMs)經(jīng)過多年的發(fā)展與優(yōu)化,已在文本理解、語義分析和敏感信息識別等方面展現(xiàn)出高度的成熟性與可靠性。隨著企業(yè)對代碼安全、數(shù)據(jù)合規(guī)及隱私保護要求的不斷提升,傳統(tǒng)的基于規(guī)則或正則表達式的敏感信息檢測手段在面對復(fù)雜上下文、模糊命名模式或非標準格式時逐漸顯現(xiàn)出局限性。因此,引入AI能力輔助進行增量式敏感信息檢測,尤其是針對明文賬號密碼等高風(fēng)險內(nèi)容的識別,已成為一種具有前瞻性和實用價值的技術(shù)路徑。

相較于依賴公開云服務(wù)的大模型應(yīng)用,私有化部署的AI大模型更適用于此類安全敏感場景。原因在于:其一,私有部署可有效避免源代碼、配置文件等內(nèi)容上傳至第三方平臺所帶來的數(shù)據(jù)泄露風(fēng)險;其二,企業(yè)可在受控環(huán)境中對模型進行定制化微調(diào),使其更精準地適應(yīng)內(nèi)部命名規(guī)范、技術(shù)棧特征和業(yè)務(wù)語境,從而提升檢測準確率;其三,私有模型支持離線運行,滿足金融、政務(wù)、能源等高合規(guī)要求行業(yè)的監(jiān)管需求。

值得注意的是,大模型輸出通常具有一定的開放性和不確定性,若僅以“是否存在賬密”作為自由回答,可能導(dǎo)致結(jié)果難以結(jié)構(gòu)化處理,影響后續(xù)自動化流程的判斷。為此,在調(diào)用AI接口時,應(yīng)通過精心設(shè)計的提示詞工程(Prompt Engineering) 顯式約束輸出格式。推薦方式包括:要求模型返回分類級別判定(如“高/中/低”風(fēng)險),或提供概率化評分(如“95% 可能包含明文密碼”),以便集成系統(tǒng)依據(jù)預(yù)設(shè)閾值做出攔截、告警或放行決策。

示例:標準化AI調(diào)用請求與響應(yīng)

請求 Prompt:

請分析以下代碼片段,判斷其中是否可能包含明文賬號或密碼信息。請僅回答一個JSON對象,字段為 risk_level(取值:“high”, “medium”, “low”)和 confidence_score(0.0~1.0之間的浮點數(shù))。不要解釋。

db.connect("jdbc:mysql://localhost:3306/prod", "admin", "P@ssw0rd!2024")

AI 模型返回:

{
  "risk_level": "high",
  "confidence_score": 0.98
}

該結(jié)構(gòu)化輸出可被CI/CD流水線直接解析,觸發(fā)高風(fēng)險阻斷策略,實現(xiàn)與DevOps流程的無縫集成。綜上所述,結(jié)合私有化大模型與規(guī)范化輸出機制,能夠構(gòu)建更加智能、安全且可操作的敏感信息防控體系。

明文密碼加密處理

明文密碼加密處理一般有兩種:

  1. 把Python腳本編譯成二進制文件(例如 pyinstaller/cython 等);
  2. 使用Python源碼混淆/加密工具(例如 pyarmor/pyminifier 等);

Python腳本編譯成二進制

pyinstaller和cython都能生成“不可讀”的產(chǎn)物,二者均可跨平臺使用,且打包/編譯后可以隱藏源碼發(fā)布,但其設(shè)計目標、實現(xiàn)機制和適用場景有明顯區(qū)別,對比如下:

特性PyInstallerCython
主要使用場景打包整個Python應(yīng)用為獨立的可執(zhí)行文件將Python代碼編譯為C擴展模塊(.so/.pyd)
能否支持模塊化導(dǎo)入否,無法被其他Python腳本 import是,可以作為獨立的module被import
性能提升否,微乎其微,打包產(chǎn)物較臃腫打包產(chǎn)物精簡,運行性能接近C級別

總的來說,PyInstaller適合發(fā)布一個“黑盒應(yīng)用”,與其功能類似的其他第三方模塊還有 cx_Freeze/py2exe/py2app/Nuitka等,這些或多或少能彌補PyInstaller打包產(chǎn)物過于笨重的問題。相對PyInstaller,這里更推薦使用Cython將包含秘鑰、核心算法的敏感源碼轉(zhuǎn)換為C并編譯成原生模塊來使用。下面提供一個Cython的使用示例:
創(chuàng)建一個包含敏感信息的模塊:

# _crypto.pyx
def decrypt_data(char[:] encrypted_data):
    # 模擬解密邏輯(實際可用 AES 等)
    result = ""
    for c in encrypted_data:
        result += chr(c ^ 42)
    return result

編寫setup.py:

# setup.py
from setuptools import setup
from Cython.Build import cythonize

setup(
    ext_modules = cythonize("_crypto.pyx", compiler_directives={'language_level': "3"})
)

編譯 python setup.py build_ext --inplace
生成 _crypto.cpython-xxx.so_crypto.pyd,在其他模塊中如果想使用此模塊,直接import即可,如:

from _crypto import decrypt_data
plain_text = decrypt_data(b'encrypted_data')

發(fā)布時只需發(fā)布.so/.pyd即可實現(xiàn)安全調(diào)用的效果。
當(dāng)然也可以將PyInstaller和Cython結(jié)合使用:

[普通模塊] → import → [Cython 加密模塊] → 打包 → [PyInstaller 可執(zhí)行文件]

Python源碼混淆/加密(pyarmor/pyminifier)

pyarmor

pyarmor 是目前 Python 領(lǐng)域中最成熟、功能最全面的源碼保護工具之一。它不僅僅是一個“混淆器”,更是一套完整的代碼加密 + 運行時保護 + 授權(quán)控制體系。其原理是將 .py 文件編譯為加密的字節(jié)碼,并生成一個運行時解密的包裝層。真正的邏輯只有在運行時才會被動態(tài)還原,且原始代碼不會以明文形式存在于磁盤上。主要特點:

  • 支持函數(shù)級、模塊機代碼加密;
  • 可綁定機器碼(License控制),防止非法復(fù)制;
  • 支持打包后的腳本防調(diào)試、防反編譯;

pyarmor 的基礎(chǔ)混淆和加密功能是免費的,可以通過 pip install pyarmor-core 安裝使用,但是平臺授權(quán)、動態(tài)許可證、更強的混淆策略則需要購買商業(yè)版本。
使用方法:pyarmor obfuscate --output dist/ myscript.py,生成的 dist/ 目錄中包含加密后的腳本和運行所需的 pyarmor_runtime,部署時需一并發(fā)布。

相比 pyarmor 的“重裝防護”,pyminifier 更像是一個“代碼美化反向操作工具”。它的主要目標不是安全加密,而是通過壓縮、重命名、刪除注釋等方式讓代碼變得難以閱讀。主要特點:

  • 刪除空格、注釋、文檔字符串;
  • 將變量名、函數(shù)名替換為單個字母(如 a, b, c);
  • 支持簡單的控制流扁平化(需配合其他庫);
  • 純 Python 實現(xiàn),安裝簡單;

pyminifier

pyminifier完全開源免費,可直接pip install pyminifier安裝,比較適合以下情況:

  • 對安全性要求不高,僅希望“不讓別人一眼看懂”代碼
  • 用于小型腳本、自動化工具的簡易保護
  • 作為 CI/CD 流程中的輕量混淆步驟
    需要注意的是,pyminifier 生成的代碼仍然是標準 Python,只要有經(jīng)驗的人稍加分析就能還原邏輯,因此不能用于高安全場景。

除了 pyarmor 和 pyminifier,還有一些工具也提供了不同程度的代碼保護能力,列出其核心功能供參考:

  • dummy_py:通過插入無意義代碼、改變控制流結(jié)構(gòu)來增加反編譯難度,屬于“干擾型”混淆。
  • python-obfuscator:一款新興的混淆工具,支持變量重命名、字符串加密、代碼打亂等功能,界面友好,適合初學(xué)
  • BytecodeAssembler:直接操作字節(jié)碼層面的工具,技術(shù)門檻高,但防護更強,常用于研究或高級定制場景。

總結(jié)

本文簡單介紹了Python中明文賬密的掃描、攔截和加密方法,旨在解決Python項目開發(fā)過程中的信息安全、規(guī)范性問題。如果追求的是真正意義上的代碼保護,尤其是要交付給外部客戶或涉及商業(yè)機密,那么 pyarmor 是首選。如果只是想做一個“看得不太清楚”的版本,比如用于內(nèi)部小工具防窺探,或者想減少腳本體積,那 pyminifier 就足夠了,而且免費、輕便、易集成。對于極高敏感邏輯,建議結(jié)合 Cython 編譯核心模塊 + pyarmor 加密部署 + 服務(wù)器端驗證 的多重策略,才能構(gòu)建真正可靠的防護體系。

到此這篇關(guān)于Python源碼中明文賬密的掃描、攔截與加密處理的文章就介紹到這了,更多相關(guān)Python源碼明文賬密處理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python自動化辦公之Excel數(shù)據(jù)的寫入

    Python自動化辦公之Excel數(shù)據(jù)的寫入

    這篇文章主要為大家詳細介紹一下Python中excel的寫入模塊- xlsxwriter,并利用該模塊實現(xiàn)Excel數(shù)據(jù)的寫入,感興趣的小伙伴可以了解一下
    2022-05-05
  • Python3.遍歷某文件夾提取特定文件名的實例

    Python3.遍歷某文件夾提取特定文件名的實例

    下面小編就為大家分享一篇Python3.遍歷某文件夾提取特定文件名的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • Python 中開發(fā)pattern的string模板(template) 實例詳解

    Python 中開發(fā)pattern的string模板(template) 實例詳解

    這篇文章主要介紹了Python 中開發(fā)pattern的string模板(template) 實例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • python實現(xiàn)控制臺輸出顏色

    python實現(xiàn)控制臺輸出顏色

    這篇文章主要為大家詳細介紹了python實現(xiàn)控制臺輸出顏色,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-03-03
  • 用python畫一只帥氣的皮卡丘

    用python畫一只帥氣的皮卡丘

    大家好,本篇文章主要講的是用python畫一只帥氣的皮卡丘,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • 用django-allauth實現(xiàn)第三方登錄的示例代碼

    用django-allauth實現(xiàn)第三方登錄的示例代碼

    這篇文章主要介紹了用django-allauth實現(xiàn)第三方登錄的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-06-06
  • Python處理JSON保持字段順序的實現(xiàn)方案

    Python處理JSON保持字段順序的實現(xiàn)方案

    文章詳細介紹了在Python中處理JSON時保持字段順序的方法,包括JSON規(guī)范、Python版本的變化、常見方案和最佳實踐,需要的朋友可以參考下
    2026-03-03
  • python實現(xiàn)簡單的井字棋游戲(gui界面)

    python實現(xiàn)簡單的井字棋游戲(gui界面)

    這篇文章主要介紹了python如何實現(xiàn)簡單的井字棋游戲,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2021-01-01
  • Python 中面向接口編程詳情

    Python 中面向接口編程詳情

    這篇文章主要介紹了Python 中面向接口編程詳情,Python 中的接口與大多數(shù)其它語言的處理方式不同,它們的設(shè)計復(fù)雜性也不同,關(guān)于Python 接口編程的介紹,需要的小伙伴可以參考下面文章內(nèi)容
    2022-05-05
  • 新手如何快速入門Python(菜鳥必看篇)

    新手如何快速入門Python(菜鳥必看篇)

    下面小編就為大家?guī)硪黄率秩绾慰焖偃腴TPython(菜鳥必看篇)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06

最新評論

宜君县| 蓬莱市| 石屏县| 河津市| 赞皇县| 沁阳市| 客服| 温泉县| 芒康县| 清丰县| 玛多县| 桃江县| 肇东市| 新化县| 临洮县| 阳城县| 神池县| 任丘市| 扎兰屯市| 汉川市| 浠水县| 鸡西市| 广平县| 香港 | 城口县| 清原| 正镶白旗| 巢湖市| 乡宁县| 申扎县| 南昌县| 巴马| 惠来县| 饶河县| 津南区| 东阳市| 谢通门县| 汤阴县| 班戈县| 黄陵县| 开阳县|