5

パスワードを文字列と呼ばれる変数にプレーンテキストで保存するとpassWdします。この変数を破棄すると、python はどのようにこの変数を解放しますか (たとえば、del passWdまたはを使用passWd= 'new random data')?

バイト配列として格納されている文字列は、それが元々存在していたメモリ場所に上書きできることを意味しますか、それとも変更できないメモリ領域の固定セットであり、新しい値を代入するときに新しいメモリ領域が存在します作成され、古い領域は破棄されますが、null で上書きされませんか?

Python がメモリ領域の安全性をどのように実装しているか疑問に思っており、それについてもっと知りたいと思っています。主に興味があるからです :)

これまでに収集したものから、del(または__del__) を使用すると、インタープリターがその変数のメモリ領域を自動的に解放せず、問題が発生する可能性があります。また、delが値の削除をスローするかどうかもわかりません。しかし、それは私が集めたものであり、白黒のものではありません:)

私が尋ねた主な理由は、文字列を取得し、いくつかの I/O を実行し、それを別のサブシステム (たとえば、raspberry pi のブートローダー) に渡し、インターフェースがPython (一部の人々の耳には奇妙に聞こえるかもしれません..) であり、I/O 計算中にデータが危険にさらされることは心配していませんが、2 つのサブシステムのハンドオーバーの間にメモリ ダンプが発生している可能性があります。または、システムがフリーズしている場合(休止状態など)、システムが起動してから20分後に変数をできるだけ早く削除しましたが、どういうわけか、私が実行しているにもかかわらず、メモリ内に残っていますdel passWd:)

(追伸。スーパーユーザーに尋ねたところ、ここで紹介されました。文法がお粗末で申し訳ありません!)

4

2 に答える 2

2

カスタムコード化された入力方法を使用してパスワードを取得しない限り、不変の文字列だけでなく、より多くの場所にパスワードが存在します。あまり心配しないでください。

OS は、メモリが別のプロセスに割り当てられる前に、プロセスからのデータが消去されるように注意する必要があります。もちろん、ページがディスクにコピーされている (スワップアウトまたはハイバネートされている) 場合、これは失敗する可能性があります。

安全なパスワード入力は簡単ではありません。これを処理する特別なライブラリまたはモジュールを見つけることができるかもしれません。

于 2013-04-09T15:04:04.937 に答える