摘要:在考慮安全性時,你需要考慮如何避免被濫用,也不例外,即使在標準庫中,也存在用于編寫應用的不良實踐。修復使用替換標準庫模塊,它增加了針對這些類型攻擊的安全防護。但這卻是中最大的安全漏洞之一。
簡評:編寫安全代碼很困難,當你學習一個編程語言、模塊或框架時,你會學習其使用方法。 在考慮安全性時,你需要考慮如何避免被濫用,Python
也不例外,即使在標準庫中,也存在用于編寫應用的不良實踐。然而,許多 Python 開發人員卻根本不知道它們。
接上篇
6. 解析 XML(Parsing XML)
如果你的應用程序要加載、解析 XML 文件,則你可能正在使用 XML 標準庫模塊。通過 XML 的攻擊大多是 DoS 風格(旨在使系統崩潰而不是泄露數據),這些攻擊十分常見,特別是在解析外部(即不可信任的)XML 文件時。
其中有個「billion laughs」,因為他的 payload 通常包含很多(十億)「lols」。基本上,這個原理是可以在 XML 中使用參照實體,所以當解析器將這個 XML 文件加載到內存中時,它會消耗數 G 大小的內存(RAM)。
試試看,如果你不相信我的話 :-)
]>&lol9;
另一些攻擊使用外部實體擴展。XML 支持從外部 URL 引用實體,XML解析器通常會毫無疑問地獲取并加載該資源。「攻擊者可以規避防火墻并訪問受限制的資源,因為所有請求都是由內部可信的 IP 地址創建的,而不是來自外部。」
需要考慮的另一種情況是依賴的第三方軟件包需要解碼 XML ,例如配置文件、遠程 API。你甚至可能不知道某個依賴關系會將這些類型的攻擊置之不理。
修復:
使用 defusedxml 替換標準庫模塊,它增加了針對這些類型攻擊的安全防護。
7. 受污染的 site-packages 或 import 路徑
Python 的 import 系統非常靈活,當你想要為測試寫猴子補丁或重載核心功能時,這是非常棒的。
但這卻是 Python 中最大的安全漏洞之一。
安裝第三方軟件包,無論是在虛擬環境中還是全局(通常不鼓勵)都會讓你看到這些軟件包中的安全漏洞。有一些發布到 PyPi 的軟件包與流行的軟件包具有相似的名稱,但是卻執行了任意代碼。
需要考慮的另一種情況是依賴的依賴,他們可能包含漏洞,他們也可以通過導入系統覆蓋Python 中的默認行為。
修復:
看看 http://PyUp.io 及其安全服務,為所有應用程序使用虛擬環境,并確保全局的 site-packages 盡可能干凈,檢查包簽名。
8. 序列化 Pickles
反序列化 pickle 數據和 YAML 一樣糟糕。Python 類可以聲明一個 reduce 方法,該方法返回一個字符串,或一個可調用的元組以及使用 pickle 序列化時調用的參數。攻擊者可以使用它來包含對其中一個子進程模塊的引用,以在主機上運行任意命令。
修復:
切勿使用 pickle 反序列化不受信任或未經身份驗證來源的數據。改用另一種序列化模式(如JSON)。
9. 使用系統 Python 運行時并且不修復它
大多數 POSIX 系統都自帶有一個 Python 2 版本(通常是舊版本)。
有時候 Python(即 CPython 是用 C 語言編寫的) 解釋器本身存在漏洞, C 中的常見安全問題與內存分配有關,所以大多是緩沖區溢出錯誤,CPython 多年來一直存在一些溢出漏洞,每個漏洞都在后續版本中進行了修復。也就是說,如果及時升級 python 運行時,就很安全。
修復:
為生產應用程序安裝最新版本的 Python,并及時安裝修復更新!
10. 不修復依賴關系
類似于不修補 python 運行時,還需要定期修補依賴關系。
在 PyPi 的軟件包中「釘住」 Python 軟件包版本的做法是很糟糕的,目的是「這些是能正常工作的版本」,所以每個人都不升級它。
上面提到的代碼中的所有漏洞在第三方包中存在時同樣重要,這些軟件包的開發人員每時每刻都在修復安全問題。
修復:
使用像 PyUp.io 這樣的服務來檢查更新,向應用程序提出 pr,并運行測試以保持軟件包是最新的。
原文:10 common security gotchas in Python and how to avoid them
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/41905.html
摘要:在考慮安全性時,你需要考慮如何避免被濫用,也不例外,即使在標準庫中,也存在用于編寫應用的不良實踐。計時攻擊需要精確性,所以通常不能用于高延遲的遠程網絡。由于大多數應用程序涉及可變延遲,因此幾乎不可能在服務器上編寫計時攻擊。 簡評:編寫安全代碼很困難,當你學習一個編程語言、模塊或框架時,你會學習其使用方法。 在考慮安全性時,你需要考慮如何避免被濫用,Python 也不例外,即使在標準庫中...
摘要:在考慮安全性時,你需要考慮如何避免被濫用,也不例外,即使在標準庫中,也存在用于編寫應用的不良實踐。計時攻擊需要精確性,所以通常不能用于高延遲的遠程網絡。由于大多數應用程序涉及可變延遲,因此幾乎不可能在服務器上編寫計時攻擊。 簡評:編寫安全代碼很困難,當你學習一個編程語言、模塊或框架時,你會學習其使用方法。 在考慮安全性時,你需要考慮如何避免被濫用,Python 也不例外,即使在標準庫中...
摘要:下面是需要了解的個命令和它們的一些常見標志。每個命令都鏈接到該命令的指南。僅用于提交級別。指定一個不同的提交,而不是來丟棄自提交以來的更改。包裝在本文中,你已經看到了一些關鍵的命令,并配置了環境以節省時間。 showImg(https://segmentfault.com/img/remote/1460000018662396); 在本文中,我們將討論那些作為開發人員、數據科學家或產品...
摘要:它主要是為了允許在中使用基于的機器學習,但是它可以與任何庫或框架一起使用。已經通過啟用服務器通過使用的機器學習服務在中執行腳本,添加到其高級分析擴展,現在稱為機器學習服務。存儲的實例必須安裝具有的機器學習服務要在中使用執行腳本,應運行或。 Python和SQL Server 2017的強大功能 Python是SQL Server 2017的新功能。它主要是為了允許在SQLServer中...
摘要:內置函數們能夠被提拔出來,這就意味著它們皆有獨到之處,有用武之地。因此,掌握內置函數的用法,就成了我們應該點亮的技能。報錯包含了內置命名空間中的名稱,在控制臺中輸入,就能發現很多內置函數異常和其它屬性的名稱。 Python 提供了很多內置的工具函數(Built-in Functions),在最新的 Python 3 官方文檔中,它列出了 69 個。 大部分函數是我們經常使用的,例如 p...
閱讀 3153·2021-11-22 14:45
閱讀 3299·2019-08-29 13:11
閱讀 2305·2019-08-29 12:31
閱讀 921·2019-08-29 11:21
閱讀 2990·2019-08-29 11:09
閱讀 3615·2019-08-28 18:11
閱讀 1419·2019-08-26 13:58
閱讀 1273·2019-08-26 13:27