7

SQLiteと に保存されたセッションを使用して、PHP Web アプリケーションを作成しましたfilesystem

これは機能的に優れており、魅力的な低メンテナンスです。ただし、共有ホストで実行する必要があります。

共有ホスト上のすべての Web アプリケーションは同じユーザーとして実行されるため、データベースやコードなどと同様に、ユーザーのセッション データは脆弱です。

DBMS多くの人が、このようMySQLな状況でセッションを保存することを推奨しています。だから最初はそれをやろうと思って、SQLiteデータも移動しMySQLました。しかしMySQL、Web アプリケーションのユーザーが資格情報を読み取れるようにする必要があることに気付き、振り出しに戻りました。

PHP最良の解決策は、として使用することだと思いますCGI。これにより、Web アプリケーションごとに異なるユーザーとして実行されます。これは素晴らしいように聞こえますが、私のホストはこれを行わず、mod_php. これを有効にすることについて、管理者の観点から何か欠点はありますか? (パフォーマンス、下位互換性など)? そうでない場合は、これを有効にするように依頼します。

それ以外の場合、この状況でデータベースとセッション データを保護するためにできることはありますか?

4

5 に答える 5

4

コードが共有 Web ユーザーとして実行されている限り、サーバーに保存されているものはすべて脆弱になります。他のユーザーは、PHP スクリプトを作成して、データや PHP コードなど、サーバー上の読み取り可能なファイルを調べることができます。

ホスティング プロバイダーが許可する場合は、別のユーザーで PHP を CGI として実行すると効果的ですが、リクエストごとに新しいプロセスを作成する必要があるため、パフォーマンスが大幅に低下することが予想されます。(FCGI をよりパフォーマンスの高い代替手段と見なすことができます。)

もう 1 つの方法は、ユーザーが提供するものに基づいて Cookie を設定し、それを使用してセッション データを暗号化することです。たとえば、ユーザーがログインすると、ユーザー名、パスワード (提供されたもの)、および現在の時刻のハッシュを取得し、ハッシュを使用してセッション データを暗号化し、ハッシュを含む Cookie を設定します。次のリクエストで、Cookie が返されます。これを使用して、セッション データを復号化できます。ただし、これは現在のセッション データのみを保護することに注意してください。ユーザー テーブル、その他のデータ、およびコードは依然として脆弱です。

この状況では、提供されるセキュリティの低下を考慮して、共有ホスティングの低コストのトレードオフが許容できるかどうかを判断する必要があります. これはアプリケーションによって異なります。セキュリティを追加するために複雑な (そしておそらくあまり効果的ではない) 方法を考え出すよりも、リスクを受け入れる方がよい場合があります。

于 2008-09-25T01:52:30.633 に答える
1

私は、セキュリティをオール オア ナッシングとは考えていません。実行できる手順があります。Web db ユーザーには、必要な権限のみを付与してください。パスワードをハッシュとして保存します。openid ログインを使用して、ユーザーが SSL 経由で資格情報を提供できるようにします。

cgi 上の PHP は遅くなる可能性があり、一部のホストは複数の環境をサポートしたくない場合があります。

なんらかの理由でホストに固執する必要がある場合もありますが、一般的に利用可能なホストは非常に多いため、機能とセキュリティ、およびコストを比較することをお勧めします. 多くの企業が仮想マシン ホスティング (自分のコードを他のユーザーから隔離するという点でほぼ専用のサーバー レベル セキュリティ) を提供し始めていることに気付きました。

于 2008-09-25T01:56:10.610 に答える
0

サーバーを共有するサイトからのデータのプライバシーとセキュリティを意識している場合、共有ホストはWebサイトを実行する方法ではありません。Webアプリケーションにアクセスできるものはすべて、他の人にとって公正なゲームです。彼らがそれにアクセスできるようになるのは時間の問題です(彼らがあなたにそれをするインセンティブを持っていると仮定して)。

于 2008-09-25T01:58:13.647 に答える
0

「DB接続変数をWebルートの下のファイルに配置できます。これにより、少なくともWebアクセスからデータベースを保護できます。ファイルベースのセッションも使用する場合は、ユーザーのディレクトリでセッションパスを設定できます。再びウェブルートの外に。」

私はアカウントを持っていないので、それを否定することはできません..しかし、真剣にそれは質問にさえ関係がありません。

Webルートの外にあるものを保存します。これはどのホスティングシナリオにも当てはまり、共有ホスティングに固有のものではありません。ここでは、部外者からの保護について話しているのではありません。同じマシン上の他のアプリケーションから保護することについて話しています。

OPにとって、すでに提案したように、CGIとしてのPHPが最も安全なソリューションだと思います。しかし、他の誰かが言ったように、これでパフォーマンスが低下します。

あなたが見るかもしれない何かはあなたのセッションとdbをMySQLに移動し、safe_modeやopen_basedirを使用することです。

于 2008-09-25T02:05:23.880 に答える
0

コードではなく、インフラストラクチャを変更することで問題を解決します。VPSサーバーへのアップグレードを検討してください。今日、あなたはそれらを非常に安価に手に入れることができます。私はVPSが月額10ドルで始まるのを見てきました。

于 2008-09-25T08:17:17.993 に答える