天天看點

python中常見的漏洞_Python 中的 10 個常見安全漏洞,以及如何避免(上)

編寫安全代碼簡短評論:是很困難的。當你學習一門程式設計語言,子產品或架構,您将學習如何使用它。當考慮到安全,您需要考慮如何避免濫用。Python也不例外。即使在标準庫,有不好的實踐編寫應用程式。然而,許多Python開發人員不知道他們。1. 輸入注射注射(輸入)注入攻擊是非常廣泛和普遍。有許多類型的注射,他們影響所有語言,架構和環境。指令注入可能發生當使用popen、子流程調用過程和參數的變量。當調用本地指令,有人可能會設定一些值作為惡意。以下是一個簡單的腳本,它使用使用者提供的檔案名調用子流程:進口subprocessdef transcode_file(請求,檔案名):指令=的ffmpeg我\u201C{來源}\u201Doutput_ .

攻擊者将檔案名的價值\u201D;貓\/ etc \/ passwd |郵件或其他同樣危險的事情。解決辦法:如果你使用一個web架構,您可以使用附加的實用程式輸入清理,除非你有一個很好的理由,不要手動建構SQL查詢,大多數orm内置衛生處理方法。對于shell,您可以使用shlex子產品逃離輸入正确。2. 不要使用斷言語句斷言語句(assert語句),以防止使用者通路不應該通路的代碼段。def foo(請求、使用者):維護_admin,\u201C使用者沒有通路\u201D#安全代碼\u2026現在,在預設情況下,Python執行腳本和調試是真實的。但是在生産環境中,通常使用優化操作,将跳過斷言語句,直接進入安全的代碼,無論使用者是is_admin。

3.計時攻擊時機攻擊基本上是公開行為的方法和算法通過比較提供所需的時間值。計時攻擊需要準确性,是以通常在高延遲遠端網絡不能使用。因為大多數web應用程式涉及變量延遲,這幾乎是不可能寫出計時攻擊HTTP web伺服器。然而,如果你有一個指令行應用程式提示輸入密碼,攻擊者可以編寫一個簡單的腳本計算所需的時間來比較其值與實際密碼。解決辦法:使用Python中引入_digest比較與其他私人密碼值。4. 臨時檔案(臨時檔案)來建立一個臨時檔案在Python中,通常使用mktemp()函數來生成一個檔案名,然後使用該名稱來建立一個檔案。\u201C這是不安全的,因為另一個程序可能建立一個具有相同名稱的檔案之間的差距調用mktemp()和後續嘗試建立檔案通過第一個過程。

如果不正确的方法被調用時,Python的最新版本将抛出一個運作時警告。解決辦法:如果你需要生成臨時檔案,請使用和使用mkstemp tempfile子產品。5. 使用引用PyYAML文檔:警告:不安全使用來自不受信任的源的資料調用!它是那麼強大,是以任何Python函數可以調用。對于這個美麗的例子中發現Ansible流行的Python項目,你可以提供這個值Ansible拱頂YAML(有效),電話()的參數提供的檔案。[\解決辦法:總是使用_load除非你有一個非常好的理由。