1

安全なログインを作成するためのPHPスキルを信頼していないため、作成しているphpスクリプトのディレクトリをパスワードで保護するために.htaccessを使用するつもりでしたが、AuthUserFileの相対パスを使用できないことがわかりました。これを一般化します。

ディレクトリをパスワードで保護するための安全なPHPログインスクリプトを教えていただければ幸いです。ありがとう。

4

2 に答える 2

1

できることの1つは、すべての「秘密の」ファイルをサーバーのWebルートの外部のディレクトリに保持することです。これらのファイルへのすべてのアクセスは、ディレクトリ内の単一のPHPスクリプトを介してルーティングできます。このようなもの:

http://www.example.com/protected-directory/access.php?file=/foo/document.doc

次のようなディレクトリ構造の場合:

+--+ /server_root
   |
   +--+ /web_root
   |  |
   |  +--+ /protected-directory
   |     +-- access.php
   |     +-- access-denied.html
   |
   +--+ /protected_root
      |
      +--+ /foo
         +-- document.doc

あなたの中でaccess.phpあなたはこのようなことをするでしょう:

$file = $_REQUEST['file'];
if ($user->hasAccessTo($file)) {
    readfile("/server_root/protected_root/$file");
} else {
    readfile('access-denied.html');
}

fileここで、誰もあなたのパラメータをねじ込んで、のようなものを渡さないように注意する必要があります"../../../etc/passwd"。また、上記の例では、正しいヘッダーを送信することを確認する必要があります。わかりやすくするために、ヘッダーを省略しました。

于 2009-05-31T20:48:07.447 に答える
0

AuthUserFileへの絶対パスを使用して、Webサーバーにアクセスできない場所にそのファイルを配置するように調整できます。私は何年もそれをしました。正常に動作します。

于 2009-05-31T20:42:07.240 に答える