6

Web サーバーで問題が発生し、Web ブラウザーで PHP スクリプトがプレーン テキスト ファイルとして表示される可能性があることを読みました。その結果、ほとんどの PHP スクリプトを Web ルート以外のディレクトリに移動しました。今、私の cgi-bin の CGI スクリプトにも同じことが起こるのではないかと考えていました。

私の主な関心事は、MySQL データベースのユーザー名とパスワードを含む 1 つのスクリプトです。これがセキュリティ ホールの可能性がある場合 (少なくともデータベース コンテンツに関する限り)、機密データを別の場所に置き、そこから取得する方法はありますか (別のディレクトリのファイルに保存して読み取るなど)たとえば、そのファイルから)?私のスクリプトは Perl で書かれています。

4

6 に答える 6

10

Web サーバーで問題が発生し、Web ブラウザーで PHP スクリプトがプレーン テキスト ファイルとして表示される可能性があることを読みました。その結果、ほとんどの PHP スクリプトを Web ルート以外のディレクトリに移動しました。今、私の cgi-bin の CGI スクリプトにも同じことが起こるのではないかと考えていました。

はい。プログラムが実行される代わりに提供される原因となる問題が発生した場合、それらのコンテンツが公開されます。これは、PHP とまったく同じ問題です (ただし、cgi-bin ディレクトリが通常構成されている (つまり、Web ルートのディレクトリにエイリアスされている) 場合、問題が発生するのは少し難しくなります)。

私の主な関心事は、MySQL データベースのユーザー名とパスワードを含む 1 つのスクリプトです。これがセキュリティ ホールの可能性がある場合 (少なくともデータベース コンテンツに関する限り)、機密データを別の場所に置き、そこから取得する方法はありますか (別のディレクトリのファイルに保存して読み取るなど)たとえば、そのファイルから)?

はい。まさに、ディレクトリが webroot の外にあることを確認してください。

セキュリティを強化するために、データベースにアクセスする必要があるホストの最小セットからの接続の資格情報のみをデータベースが受け入れるようにしてください。たとえば、データベースが Web サーバーと同じサーバー上にある場合、資格情報は localhost に対してのみ機能します。その場合、データベースが localhost ネットワーク インターフェイスでのみリッスンするようにすることも良い考えです。

私のスクリプトは Perl で書かれています。

これにはConfig::*モジュールの 1 つを使用することを検討します。

于 2010-12-01T15:41:01.363 に答える
3

言及する価値のある懸念事項の 1 つは、共有ホスティングに固有のものです。

他のユーザーと共有しているホストを使用している場合、パスワードを他のユーザーから隠すことは不可能な場合があります。これは、OS と Web サーバーの構成の詳細によって異なります。

たとえば、Linux で Apache 構成を使用するのが一般的です。Web サイトを提供しているユーザーが Web サーバー ユーザーにファイルを読み書きできるようにする唯一の方法は、すべてのユーザーが読み書きできるようにすることです。

これらすべてのユーザーが自分でこれを悪用しないと信頼できますが、これらの Web サイトの 1 つに侵入者がファイル システム全体を表示できる脆弱性がある場合、侵入者は他のすべての Web サイトでそれを悪用できます。

これに対する対策はありますが、ユーザーにとっては煩雑になるため、多くのホスティング事業者は実装していません。

于 2012-01-25T09:46:19.350 に答える
2

回避できるのであれば、スクリプトにパスワードをハードコードすることは絶対にお勧めできません。幸いなことに、Postgres と MySQL の両方がファイルからの DB クレデンシャルのロードをサポートしています。Postgres では ~/.pgpass を使用し、MySQL では ~/.my.cnf だと思います。いずれの場合も、スクリプトを実行しているユーザーだけがファイルを読み取る権限を持つように権限を調整します。このアプローチの利点は、ファイルを読み取るためのコードを記述する必要がないことです。DB クライアント ライブラリによって自動的に行われます。

于 2010-12-02T09:06:16.843 に答える
1

それは間違いなくセキュリティ上の懸念です。暗号化されたパスワードを別のファイルに保存し、アプリだけがアクセスできるようにする必要があります。

于 2010-12-01T15:40:57.830 に答える
0

cgi-binとして設定されたディレクトリを使用する場合、Apache設定のエラーを除いて、ファイルを表示する方法はありません。cgi-binディレクトリの外部でサイトルートの内部でPerlプログラムを使用すると、それが発生する可能性があります。

また、ローカルソケットからの接続のみを受け入れるようにDBを構成できるため、DBパスワードを知っていると役に立ちません。

于 2010-12-01T20:12:04.990 に答える