我正試圖找到一種很好的方法來處理__init__()
中的錯誤,而不會泄露回溯中的敏感數據。Python(2.7):使用敏感信息在__init__中的錯誤處理
我有一個基於pxssh的課,我在__init__()
執行我的連接。 目的是初始化一個對象,以便將CLI命令發送給孩子。
class MyClass(pxssh.pxssh):
def __init__(self, credentials):
.
.
.
try:
self.connect(credentials)
except Exception as e:
stderr.write('Error: %s\n' % str(e)
exit(1)
這是很好的測試,但這個類是指由其他代碼使用,我不想去與exit(1)
殺調用者。
我會用raise
而不是exit(1)
,但問題是credentials
是一個包含密碼和其他一些敏感連接信息的字典。如果調用者引發了我拋出的任何異常,我不希望看到它被追蹤回溯。
什麼是處理這種情況的最佳方法?
謝謝!
如果你擔心回溯,爲什麼不''提出一個新的錯誤,不包含'credentials'中的任何內容? – jonrsharpe
@jonrsharpe可能是因爲他們想從'__init__'中'raise',並且無論發生什麼錯誤,所生成的追蹤都會包含對運行'__init__'的框架的引用(包括'credentials'字典) –
@哦,我明白了。那麼如果OP在擔心進程中的攻擊,就像你在下面評論的那樣,沒有太多的事要做! – jonrsharpe