Web サーバーで問題が発生し、Web ブラウザーで PHP スクリプトがプレーン テキスト ファイルとして表示される可能性があることを読みました。その結果、ほとんどの PHP スクリプトを Web ルート以外のディレクトリに移動しました。今、私の cgi-bin の CGI スクリプトにも同じことが起こるのではないかと考えていました。
はい。プログラムが実行される代わりに提供される原因となる問題が発生した場合、それらのコンテンツが公開されます。これは、PHP とまったく同じ問題です (ただし、cgi-bin ディレクトリが通常構成されている (つまり、Web ルート外のディレクトリにエイリアスされている) 場合、問題が発生するのは少し難しくなります)。
私の主な関心事は、MySQL データベースのユーザー名とパスワードを含む 1 つのスクリプトです。これがセキュリティ ホールの可能性がある場合 (少なくともデータベース コンテンツに関する限り)、機密データを別の場所に置き、そこから取得する方法はありますか (別のディレクトリのファイルに保存して読み取るなど)たとえば、そのファイルから)?
はい。まさに、ディレクトリが webroot の外にあることを確認してください。
セキュリティを強化するために、データベースにアクセスする必要があるホストの最小セットからの接続の資格情報のみをデータベースが受け入れるようにしてください。たとえば、データベースが Web サーバーと同じサーバー上にある場合、資格情報は localhost に対してのみ機能します。その場合、データベースが localhost ネットワーク インターフェイスでのみリッスンするようにすることも良い考えです。
私のスクリプトは Perl で書かれています。
これにはConfig::*モジュールの 1 つを使用することを検討します。