0

何よりも、「これは BIGGGGG のセキュリティ上の問題です」という類の回答を除いて、それで問題ありませんが、リスクの詳細な回答をお願いします。

ここに私の問題があります:内部のファイルを編集することなく、いくつかのフォルダーを自動的に保護するためにphpを使用しています。次に、.htaccess で移動します。問題は、.htaccess ファイルと .htpasswd ファイルが作成され、適切なアクセス権 (フォルダーなど) で作成されますが、常に 500 内部エラーが返され、エラー ログを確認すると、エラーについて具体的に書かれたものは何もありません。 . ファイルを手動で作成すると、機能します。

phpコードは次のとおりです。

$htpath = '../../.htpasswds/'.$ref;
mkdir($htpath, 0750);               
$htpass = $htpath.'/.htpasswd';
$ourFileHandle = fopen($htpass, 'wb') or die("Can't create .htpasswd file.");
$chars = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM0123456789";
$special_chars = '-_@#)([]|-=';
$pass = $chars[rand(0,strlen($chars)-1)].$special_chars[rand(0,strlen($special_chars)-1)].$chars[rand(0,strlen($chars)-1)].rand(0, 9999).$chars[rand(0,strlen($chars)-1)].$special_chars[rand(0,strlen($special_chars)-1)];
$content = 'client_access'.$id.':'.crypt($pass, base64_encode($pass));
fwrite($ourFileHandle, $content) or die("Can't create .htaccess file.");                
fclose($ourFileHandle);

$htpass = $path.'/.htaccess';
$handle = fopen($htpass, 'wb') or die("Can't create .htpasswd file.");
$content = 'AuthType "Basic" ';
$content .= "\n";
fwrite($handle, $content);              
$content = 'AuthUserFile "/home/thedigi1/.htpasswds/'.$ref.'/.htpasswd" ';
$content .= "\n";               
fwrite($handle, $content);
$content = 'Require valid-user ';
$content .= "\n";               
fwrite($handle, $content);
$content = 'RewriteOptions inherit';
$content .= "\n";               
fwrite($handle, $content) or die("Can't create .htaccess file.");
fclose($handle);

何が問題を引き起こす可能性があるか考えていますか? または、より良い解決策を教えてください。

どうもありがとう!

編集: 作成された htaccess のコードは次のとおりです。

AuthType "Basic" 
AuthUserFile "/home/thedigi1/.htpasswds/A-161012-47/.htpasswd" 
Require valid-user 
RewriteOptions inherit

ただし、htaccess を作成する php ファイルにアクセスするために htaccess を介して既に認証されていますが、それが問題になると思いますか?

4

1 に答える 1

0

問題が解決しました:

htaccess ファイルに AuthName 引数がありませんでした

AuthName "text"

そして、.htpasswd フォルダーを 750 ではなく 755 に CHMOD する必要がありました。

回答ありがとうございます。

于 2012-10-17T14:33:36.300 に答える