2016-05-06 7 views
0

私はphpとmysqlを使用するウェブサイトを作成しています。私はすべてのmysqlアクセスデータを "config.ini"というiniファイルに保存します。このファイルは安全である必要があり、悪意のあるユーザーはmysqlアクセスデータにアクセスできません。 rootユーザーではないユーザー "www-data"が要求を拒否しているため、PHPがアクセスするときにPHPにアクセスしようとすると問題が発生します。もし私がこのコマンドを使って "www-data"へのアクセスを許せば、 Apacheが同じユーザを通してそれをアクセスするようPHPから読むときに.iniファイルを安全にする方法

sudo chown -R root:www-data config.ini 
sudo chmod -R g+s config.ini 

すべてのユーザがウェブサイトのアドレスを入力し、/config.iniでそれを見ることができ、安全ではありません。

PHPコード

$conf = parse_ini_file('config.ini'); 
$conn = mysqli_connect($conf["host"], $conf["user"], $conf["password"], $conf["database"]); 

任意の提案を歓迎し、事前にあなたに感謝。

FULL ANSWER

1)ウェブルートの外にあるディレクトリの下に置きのconfig.ini。
2)このコマンドを使用して "www-data"を含むグループを作成します。

sudo chown root:www-data config.ini 

3)このコマンドを使用して、読み取りにアクセス権を与えます。

sudo chmod 640 config.ini 

4)通常はphpでアクセスしますが、../を使用すると新しい場所に移動します。

+0

なぜ '.php'ファイルを使用しないのですか? – ops

+0

ファイルをWebアクセスできないディレクトリに移動します。 – chris85

+0

'.ini'ファイルは実際にはもう問題にはなりません。以前は、一般的な構成エディタが登場するという前提のもとでした。彼らは決してしなかった。 – mario

答えて

3

あなたが悪意のあるアクセスを心配しているのは当然のことですが、.iniファイルがあなたのWebサーバがサービスするように設定されているディレクトリにないことを確認してください。つまり、これがサイトのWebルートの外側にあることを絶対に確認してください。

第2に、通常は、.iniファイルの配信を拒否するようにWebサーバーを構成できます。また、ディレクトリ索引のようなものをオフにして、人々が突っ込むことができないようにする必要があります。

+0

Tankyouしかし、どうすればそれにアクセスできますか? –

+0

@JosephSaundersあなたは、ファイルのアクセス許可が許す限り、ファイルシステム上の任意のファイルにphpでアクセスできます。 'parse_ini( 'config.ini')の代わりに' parse_ini( '../config.ini') ' –

+0

@JeffLambertです。これはおおよそ私が言っていることですが、あなたの例はより具体的です。ありがとう。 – tadman

関連する問題