データベースを使用するときに懸念すべき主な問題の 1 つは、アクセス権 (ユーザー名とパスワード) の公開です。プログラミングの便宜のため、通常は次のような db.inc ファイルを使用して保存します。
CODE:
<?php $db_user = 'myuser'; $db_pass = 'mypass'; $db_host = '127.0.0.1'; $db = mysql_connect($db_host, $db_user, $db_pass); ?>
ユーザー名とパスワードは機密データであり、特別な注意が必要です。 。ソースコードに書かれているということはリスクを伴いますが、避けられない問題です。これを行わないと、データベースはユーザー名とパスワードで保護されません。
http.conf (Apache の設定ファイル) のデフォルト バージョンを読むと、デフォルトのファイル タイプが text/plain (プレーン テキスト) であることがわかります。このように、Webサイトのルートディレクトリにdb.incのようなファイルが保存されていると危険が生じます。 Web サイトのルート ディレクトリにあるすべてのリソースには、対応する URL があります。Apache は .inc 接尾辞を持つファイルの処理方法のタイプを定義していないため、このタイプのファイルにアクセスすると、通常のテキスト () の形式で返されます。デフォルトのタイプ ) なので、アクセス権はクライアントのブラウザに公開されます。
このリスクをさらに詳しく説明するには、Web サイトのルート ディレクトリが /www であるサーバーを考えてみましょう。db.inc が /www/inc に保存されている場合、独自の URL http://www.php.cn/ が存在します (例を想定しています)。 .org はホスト ドメイン名です)。このURLにアクセスすると、db.incのソースファイルがテキストモードで表示されます。 /www のどのサブディレクトリにファイルを保存しても、アクセス許可が漏洩するリスクを避けることはできません。
この問題に対する最善の解決策は、Web サイトのルート外の include ディレクトリに保存することです。それらを含めるためにそれらをファイル システム上の特定の場所に置く必要はありません。必要なのは、Web サーバーがそれらへの読み取りアクセス権を持っていることを確認することだけです。したがって、含まれるファイルが Web サイトのルート ディレクトリに配置されている限り、リスクを軽減するための努力は無駄になります。実際、URL を介してアクセスする必要があるリソースを Web サイトのルート ディレクトリに配置するだけで済みます。結局のところ、これはパブリック ディレクトリです。
前のトピックは SQLite データベースにも役立ちます。データベースをカレントディレクトリに保存すると、パスを指定せずにファイル名を呼び出すだけで済むため、非常に便利です。ただし、データベースを Web サイトのルート ディレクトリに保存すると、不必要なリスクが生じます。直接アクセスを防止するセキュリティ対策を講じないと、データベースが危険にさらされます。
外部要因により、含まれるすべてのファイルを Web サイトのルート ディレクトリの外に配置することが不可能な場合は、.inc リソースへのリクエストを拒否するように Apache を設定できます。コード:
少し。実際には、ファイルの名前を db.inc.php に変更するだけです。それは、家に空いた穴を直すのではなく、壊れた家を覆うために外に大きな家を建てるようなものです。
第 8 章では、データベース アクセスの公開を防ぐ別の方法についても説明します。これは、共有サーバー環境 (ファイルが Web サイトのルート外にある場合でも公開のリスクが存在する環境) では非常に効果的です。
上記は、PHP セキュリティ アクセス許可の暴露の内容です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) にご注意ください。