2012-12-20 1 views
5

可能性の重複:
Putting core classes above the web root - good or bad idea?wwwのディレクトリの外にMySQL資格を置くのはなぜですか?

私はそれがWebルートの外にMySQLの接続の資格情報を(それはクラスのかどうか、を定義し、等。)に置くことをお勧めだと読み続けます(wwwフォルダの上)。

これはなぜですか?資格情報が.phpファイルにある場合、ブラウザからファイルにアクセスできるかどうかは関係ありません。

+3

Webサーバーが誤って構成され、誤ってPHPソースを解釈するのではなく、誤って提供するまで、 –

答えて

8

これは予防策です。誰かが誤ってあなたのApacheサーバでPHPの評価を無効にしたり、.htaccessファイルのApache設定を変更したりすると、そのファイルは任意のプレーンテキストファイルのように提供される可能性があります。または、誤ってPHPの開始タグを忘れた場合、プレーンテキストのように再作成されます。あなたはそんなに間違ったことをするつもりはないが、あなたのコードを扱っている将来の初心者が間違いを犯すかもしれない。

なぜ可能なことを防ぐことができるときに、可能なベクターを開いたままにするのですか?自分の足を撃った(または私のように足と手を撃った)他の人のアドバイスを取って、あなたのdocrootの外に信任状を移動してください。

5

ウェブルートの下に何も安全でないため、ある程度までは、それは本質的に安全でないインターネット上で利用可能です。

誤って構成されたサーバーが、PHPファイルを解釈するために送信するのではなく、いつもPHPファイルの内容を出力する可能性が常に存在します。あなたのデータベースにできるだけ多くの人が参加しようとしている人もいますが、そのうちのいくつかは楽しいものです。

いずれの場合も、常に安全な方法を使用する必要があります。それは良い習慣です。

ウェブアプリケーションでルートパスワードを使用しないでください。最小限の権限で特別なユーザーを作成します。私は常に敏感なコンフィギュレーションを保存するために.iniファイルを使用してPHPのため

...

<?php 
    $config = parse_ini_file('../config.ini'); 
?> 
+2

を整理してください。 –

+1

個人的な好みのためにiniファイルを使用していますか、それとも特別な理由がありますか? –

+0

.iniファイルは起動時にPHPによって読み込まれ、その情報はプロセスの全期間にわたって保持されます。さらに、それは個人的な好みです。 .iniファイルはPHPのネイティブなので(JavaScriptとJSONと考える)、設定オプションには意味があります。 –

2

内部wwwディレクトリにあるものなので(つまり、あなたのウェブサイトのルート)は、インターネットから潜在的にアクセスできるようにすることができます。

これは、ここにあなたの資格情報を入れれば、誰かがそれらにアクセスし、あなたのDBに直接接続できることを意味します。

このディレクトリの外部に資格情報を置くと、このようにアクセスできないことが保証されます。

関連する問題