2

Django プロジェクトでは、ユーザーがアップロードしたファイルをサーバー上で安全に保ちたいと考えています。これは OS レベル (ubuntu を使用しています) またはアプリケーション レベルで行う必要がありますか?

アプリケーション レベルで暗号化すると、保守が容易になります。ただし、パフォーマンスへの悪影響の可能性などのいくつかの欠点を除けば、これが意味をなすかどうかさえわかりません. ハッカーがサーバーを侵害した場合、彼は暗号化キーとその暗号化/復号化方法にもアクセスできます.

どんな提案でも大歓迎です。ありがとう。

4

2 に答える 2

3

データを保護する方法は、保護したい攻撃の種類によって異なります。もちろん、不正なシステム管理者など、特に保護しようとしている特定の脅威モデルがない限り、攻撃者がどのようにしてシステムを侵害する可能性が最も高いかはおそらくわかりません。

攻撃者は、Web サーバーが実行されている OS にアクセスできる可能性があります。この場合、ファイルシステム レベルの暗号化はおそらく役に立ちません。実際、ファイル システム レベルの暗号化はおそらく、誰かが物理サーバーを持ち去ってしまうことに対する有効な保護にすぎません (これは完全に有効な脅威モデルです)。ただし、ファイルがデータベースに格納されたキーで暗号化されている場合、Web サーバー OS にはアクセスできるがデータベースにはアクセスできない攻撃者は阻止されます。

対照的に、攻撃者はアプリケーションの穴を介して、OS ではなくデータベースへのアクセスを取得する可能性があります。最新のオペレーティング システムは、十分に研究された巨大な攻撃面を提示するため、この可能性は低いと予想されます。

サーバーへのフル アクセスを持つ攻撃者からユーザーのデータを保護することは非常に困難です。サーバーにないキーでデータを暗号化する必要があります。これは、ユーザー Cookie に保存されているパスワードまたはキーのようなものである可能性があります。これらすべてのスキームの問題点は、ユーザーがこのような重要なデータを保持することを信頼できないことです。ユーザーはパスワードを忘れた場合にパスワードをリセットする方法を常に望んでいます。ほとんどの場合、OS とデータベースに完全にアクセスできる攻撃者からデータを保護することは現実的ではありません。

だから私はあなたが守ろうとしているものを選びます。個人的には、OS が侵入する可能性が最も高いと予想しているため、何らかの方法で特別に保護されたデータベースの一部に格納されているキーを使用してファイルを暗号化します。ここでの課題はsettings.py、Web アプリが機能するために、OS がデータベースのログイン資格情報を ( に) 保存する必要があることです。そのため、OS 内でこれらのファイルをできるだけ制限するようにしてください。つまりchmod 600、他のことをできるだけ行わないユーザー アカウントで行います。

于 2011-08-11T06:36:36.310 に答える
1

ファイルの暗号化に使用されるキーがサーバーに保存されている場合、ファイルを暗号化してもセキュリティを強化することはできません。

ただし、ユーザーから提供されたキーを使用すると、ある程度のセキュリティが得られます。たとえば、暗号化キーを Cookie に保存すると、各リクエストの間のみ利用可能になります。これが新たなセキュリティ上の問題を引き起こすとは考えていません(攻撃者が Cookie を盗むことができれば、ユーザーのセッションも盗むことができます)。現在オンライン。

あなたが本当に偏執的であるなら、1Password と同じように、暗号化されたデータをブラウザーに送り返し、JavaScript 暗号化ルーチンでそれを解読することができます…</p>

于 2011-08-11T06:06:22.590 に答える