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

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

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

概要

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

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

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

存量敏感信息的掃描

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

  • 與主流的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ī)則(傳入正則表達(dá)式);
  • 支持基線掃描;

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

下面提供一個使用示例:

  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ù)時,默認(rèn)會啟用常見服務(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類似,主要特點(diǎn)或相對的gitleaks的區(qū)別是:

  • 可以直接pip安裝使用,需要注意的是,如果Python版本過低,pip安裝TruffleHog可能存在版本兼容性問題,不推薦使用,更推薦直接用編譯好的二進(jìn)制文件做檢查;
  • 基于“熵值 + 正則”識別潛在密鑰,并支持主動驗(yàn)證(verification) 是否真實(shí)有效(如調(diào)用 API 測試 key 是否可用);
  • 強(qiáng)大的誤報過濾能力:通過網(wǎng)絡(luò)請求驗(yàn)證發(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檢測出來,因此需要維護(hù)一個特定的白名單,避免檢測誤報。

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

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前置攔截

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

傳統(tǒng)掃描策略

傳統(tǒng)的掃描策略是指,掃描Patch中所有的文本文件,借助開源工具或自定義的掃描規(guī)則攔截高信息熵字段和潛在的硬編碼字符。這種攔截方式能直接借助上述的開源工具的能力來實(shí)施,但是缺陷也是很明顯,這種攔截機(jī)制比較“死板”,如果有人特地提交了不能被正則表達(dá)式匹配到的明文賬密(例如,把password 變量名全部改成candy,正則表達(dá)式就匹配不到password相關(guān)的字段),此時就會漏檢。即這種攔截規(guī)則不能智能化地“進(jìn)化”,需要定期維護(hù)攔截規(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ī)及隱私保護(hù)要求的不斷提升,傳統(tǒng)的基于規(guī)則或正則表達(dá)式的敏感信息檢測手段在面對復(fù)雜上下文、模糊命名模式或非標(biāo)準(zhǔn)格式時逐漸顯現(xiàn)出局限性。因此,引入AI能力輔助進(jìn)行增量式敏感信息檢測,尤其是針對明文賬號密碼等高風(fēng)險內(nèi)容的識別,已成為一種具有前瞻性和實(shí)用價值的技術(shù)路徑。

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

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

請求 Prompt:

請分析以下代碼片段,判斷其中是否可能包含明文賬號或密碼信息。請僅回答一個JSON對象,字段為 risk_level(取值:“high”, “medium”, “low”)和 confidence_score(0.0~1.0之間的浮點(diǎn)數(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)險阻斷策略,實(shí)現(xiàn)與DevOps流程的無縫集成。綜上所述,結(jié)合私有化大模型與規(guī)范化輸出機(jī)制,能夠構(gòu)建更加智能、安全且可操作的敏感信息防控體系。

明文密碼加密處理

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

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

Python腳本編譯成二進(jìn)制

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

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

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

# _crypto.pyx
def decrypt_data(char[:] encrypted_data):
    # 模擬解密邏輯(實(shí)際可用 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即可實(shí)現(xiàn)安全調(diào)用的效果。
當(dāng)然也可以將PyInstaller和Cython結(jié)合使用:

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

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

pyarmor

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

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

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

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

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

pyminifier

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

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

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

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

總結(jié)

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

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

相關(guān)文章

最新評論

曲水县| 昌黎县| 阳信县| 金堂县| 越西县| 米易县| 错那县| 安陆市| 抚松县| 红河县| 沙坪坝区| 台中县| 汕头市| 西峡县| 汕头市| 嫩江县| 晋城| 调兵山市| 甘肃省| 汾西县| 东光县| 凤冈县| 雷州市| 确山县| 昂仁县| 连南| 潢川县| 西畴县| 喀什市| 常德市| 宁晋县| 商水县| 延津县| 同仁县| 南宫市| 桑日县| 都安| 诸城市| 十堰市| 晋江市| 基隆市|