日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

试试 python-dotenv,避免敏感信息被硬编码到代码中

發(fā)布時間:2025/5/22 python 87 豆豆
生活随笔 收集整理的這篇文章主要介紹了 试试 python-dotenv,避免敏感信息被硬编码到代码中 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
我們開發(fā)的每個系統(tǒng)都離不開配置信息,例如數(shù)據(jù)庫密碼、Redis密碼、郵件配置、各種第三方配置信息,這些信息都非常敏感,一旦泄露出去后果非常嚴(yán)重,被泄露的原因一般是程序員將配置信息和代碼混在一起導(dǎo)致的。 判斷一個系統(tǒng)是否正確地將配置排除在代碼之外,一個簡單的方法是看該系統(tǒng)的代碼是否可以立刻開源,而不用擔(dān)心會暴露任何敏感信息。 所以我們做的第一件事情就是將配置信息與代碼解耦,根據(jù)不同的部署環(huán)境(開發(fā)環(huán)境、測試環(huán)境、預(yù)發(fā)布、生產(chǎn)環(huán)境)各使用一套配置文件,然后將配置信息集中到配置文件中。 例如在 django 最佳實踐里面,就有這種做法,每個部署環(huán)境都有一個獨立的配置文件,因為每個部署環(huán)境所需要的配置各不相同。 ```python ├── settings │?? ├── __init__.py │?? ├── base.py │?? ├── local.py │?? ├── production.py │?? └── test.py ``` 系統(tǒng)啟動的時候,根據(jù)指定的環(huán)境變量決定加載哪個配置文件。 ```python if __name__ == "__main__": os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings.local") ``` 這樣就完了嗎? 不,因為配置信息還是和項目代碼捆綁在一起,如果配置文件與代碼同步到版本控制系統(tǒng)又擔(dān)心敏感信息泄露。 前面只是將配置與代碼解耦,但是代碼與敏感配置信息并沒有完全隔離。 一個更好的辦法就是將配置存儲于環(huán)境變量中,環(huán)境變量可以非常方便地在不同的部署間做修改,卻不動一行代碼,而這些信息同步到代碼庫的概率微乎其微。 在代碼中我們通過讀取環(huán)境變量中的配置信息來獲取該值。 ```python settings.py MAIL_SERVER = os.getenv('MAIL_SERVER') MAIL_USERNAME = os.getenv('MAIL_USERNAME') MAIL_PASSWORD = os.getenv('MAIL_PASSWORD') ``` 現(xiàn)在哪怕代碼開源出去,也沒人知道密碼是什么。 將配置信息保存在變量環(huán)境中,有好幾種方式,一種就是手動在命令行挨個設(shè)置到環(huán)境變量中,類似于: ```python EXPORT SECRET_KEY=xxxxx EXPORT SQLALCHEMY_DATABASE_URI=XXXX EXPORT ACCESSKEYID=XXXXX ``` 這種方式很麻煩,每次啟動都需要設(shè),雖然你也可以寫到類似 .bashrc 這樣的文件中。 第二種方式是把配置信息寫在supervisor中,如果你的系統(tǒng)是用supervisor來管理進(jìn)程的話,supervisor 中可以設(shè)置環(huán)境變量,如: ```python [program:xxxx] environment= KEY=value, Key2=value2, key3="val.&" ``` 但是這種方式與 supervisor 的本身配置耦合在一起,用起來比較混亂。 而今天推薦的這個工具 `python-dotenv` 就可以完全獨立于其它配置,只針對應(yīng)用本身使用的配置信息,你只需要把配置信息全部寫入到項目根目錄的 `.env` 文件中 例如這樣: ``` REDIS_ADDRESS=localhost:6379 MEANING_OF_LIFE=42 MULTILINE_VAR="hello\nworld" ``` 這個文件我們不放在git版本控制系統(tǒng)中。然后用一行代碼來加載配置信息到環(huán)境變量中 ```python # settings.py from dotenv import load_dotenv load_dotenv() ``` 加載完成后就可以通過 `os.getenv` 方法去獲取所有的配置信息。 ```python # settings.py import os SECRET_KEY = os.getenv("EMAIL") DATABASE_PASSWORD = os.getenv("DATABASE_PASSWORD") ``` 這樣就完全將敏感信息脫離于代碼,同時代碼與配置也進(jìn)行了解耦。 python-dov 的安裝用普通的pip安裝即可 ```python pip install -U python-dotenv ``` 這種使用方式在 django、flask 應(yīng)用開發(fā)中很常見,而且他們基于此庫也做了自己的擴展,例如 flask 中可以用 `.flaskenv` 來代替 `.env` 文件。 無

轉(zhuǎn)載于:https://www.cnblogs.com/zhijun/p/11393200.html

《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的试试 python-dotenv,避免敏感信息被硬编码到代码中的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 99re热在线视频 | 伊人激情影院 | 国产福利精品视频 | 伦理片一区二区三区 | 嫩草综合| 91黑丝美女 | 国产无人区码熟妇毛片多 | 国产精品国产三级国产专区52 | 免费在线观看黄网 | 日韩在线视频第一页 | 伊人精品在线观看 | 波多野吉衣在线观看视频 | 99精品亚洲 | 四虎影院永久地址 | 久热99 | 官场艳妇疯狂性关系 | 人人澡人人透人人爽 | 变态另类ts人妖一区二区 | 午夜偷拍福利视频 | 蜜臀一区二区三区精品免费视频 | 少妇高潮一区二区三区99 | 精品aaa | 国产美女一区二区三区 | 日韩欧美精品国产 | 亚洲专区一区二区三区 | 处女朱莉第一次 | 在线观看91av| 免费在线看黄网址 | 国产精品高潮AV无码 | 五月99久久婷婷国产综合亚洲 | 亚洲最大的成人网站 | 在线免费观看黄色小视频 | 国产成人精品久久二区二区 | 国产色视频一区二区三区qq号 | 欧美韩国日本一区 | 亚洲成人午夜影院 | 日韩一级理论片 | 可以免费看毛片的网站 | 国产一级免费片 | 精品一区二区三 | www.桃色 | 麻豆一区二区三区在线观看 | 日韩精品在线免费 | 九九热在线视频观看 | 欧美久久久久久久久中文字幕 | 亚洲一级网| 捆绑无遮挡打光屁股调教女仆 | 日韩色综合网 | 三级黄色片免费观看 | 久久avav | 伊人网影院 | 天海翼一区 | 另类激情综合 | 日本美女视频 | 国产色播av在线 | 主人性调教le百合sm | 亚洲国产精品自拍视频 | 韩国一区二区三区视频 | 日本裸体视频 | 丰满秘书被猛烈进入高清播放在 | 69视频在线观看 | 黄色网页免费 | 色免费看 | 午夜两性网 | 黄视频在线播放 | 一区二区在线看 | 美丽的姑娘在线观看免费 | 午夜精品久久久久久 | 爽爽免费视频 | 日韩一级二级三级 | 高清av一区二区三区 | 免费看日韩毛片 | 久久亚洲精华国产精华液 | 黄色片视频免费在线观看 | 成人性生活免费看 | 国产精品视频免费在线观看 | 女人扒开腿免费视频app | av中文字幕不卡 | 日本国产精品视频 | 超碰77 | 欧美日韩一区二区三区不卡视频 | 欧美日比视频 | 最新国产毛片 | 天堂а√在线中文在线鲁大师 | 69av一区二区三区 | 国产精品久久久久久久久晋中 | 操欧洲美女 | 国产乱人伦app精品久久 | 亚洲av综合色区无码一区 | hitomi一区二区三区精品 | 欧美日韩中字 | 日韩av在线播放网址 | 久久久国产精品久久久 | 欧美一级片| www,久久久 | 99久久九九 | 在线不卡日本 | 女女同性高清片免费看 | av在线.com |