web-dev-qa-db-ja.com

データベースパスワードをPHPファイルに保存しても安全ですか?

私の_connection.php_ファイルには、データベースに接続するための資格情報が格納されています。

_<?php 
    $objConnect = mysql_connect("localhost","username","password"); 
    mysql_select_db("selectDB", $objConnect);
?>
_

ページがデータベースに接続する必要がある場合、私は<?php include("connection.php"); ?>を使用します。

これは安全ですか?ハッカーはそのファイルから私の資格情報を盗むことができますか?

32
OammieR

私の推奨事項:ソースコードにパスワードを保存しないでください。

代わりに、それらを構成ファイル(Webルートの外)に保存し、構成ファイルが公開されていないことを確認してください。その理由は、通常、パスワードをソースコードリポジトリにチェックインしたままにしたり、Webルートでファイルを表示できるすべての人に公開したりしたくないからです。

Webroot内の_.php_ファイルにパスワードを保存することにはさらにリスクがあります。これは少しあいまいですが、Web rootの外にファイルを配置することで簡単に回避できます。検討してください:テキストエディターを使用して_connection.php_を編集していて、編集中に接続が切断された場合、エディターは_connection.php_ファイルのコピーをバックアップファイルに自動的に保存します:例:_connection.php~_(同じディレクトリ内)。これで、バックアップファイルの拡張子が異なるため、誰かがそのファイルをフェッチしようとした場合、Apacheサーバーはファイルのコピーを平文で提供し、データベースのパスワードを明らかにします。詳細は CMSを使用するサイトの1%がデータベースパスワードを公開する を参照してください。

参照 オープンソースプロジェクトは安全なアーティファクトをどのように処理しますか?オープンソースと安全なプロジェクトでの動作方法

35
D.W.

それはかなり安全です。 PHPファイルのコンテンツを取得するには、ハッカーがサーバーを侵害するか、サーバーの設定を誤る必要があります。

それでも、スクリプトで使用されているユーザーがリモートでアクセスできないようにmysqlを構成し、管理リモートアクセスには別のユーザーを使用することをお勧めします。

11
CodesInChaos

サーバーにファイルをダウンロードする可能性があるPHPスクリプトがある場合に問題が発生します。例:download.php?=index.php

Googleを確認すると、この脆弱性が他の多くのサイトに存在していることがわかります。

5
Victor Casé