在此之前,我除了答案“这是一个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进行身份验证来访问创建htaccess的php文件,你认为这可能是问题吗?
答案 0 :(得分:0)
问题解决了:
htaccess文件缺少AuthName参数
AuthName "text"
我必须将.htpasswd文件夹清除到755而不是750。
感谢您的回答!