我想限制网站中的PHP页面。此页面位于CMS中。
页面是这样的。
http://bioenergysciences.com/innerpage.php?id=1
为此,我更新了我的.htaccess文件。
AuthName "Restricted Area"
AuthType Basic
AuthUserFile /home/bioenerg/password/.htpasswd
AuthGroupFile /dev/null
<Files http://bioenergysciences.com/innerpage.php?id=1>
require valid-user
</Files>
然后我在名为&#34;密码&#34;的文件夹中创建了.htpasswd
文件。因为如果我们在根文件夹中创建它,这是不安全的。
然后我将生成的密码添加到此文件中。 我的.htpasswd文件是这样的。
bioenergysciences:NnrhAhZ/Nc912
答案 0 :(得分:1)
您应该在<Files>
中命名文件名。或者,您可以使用<Location>
。
AuthName "Restricted Area"
AuthType Basic
AuthUserFile /home/bioenerg/password/.htpasswd
AuthGroupFile /dev/null
<Files "innerpage.php">
require valid-user
</Files>
请注意,这不会检查查询字符串。将URL与查询字符串匹配是没用的,因为我只能转到http://bioenergysciences.com/innerpage.php?foo=bar&id=1,它与上述位置不匹配并绕过保护。
如果您不想保护整个innerpage.php
而只保护id=1
,请执行basic authentication in php。
$authenticated = isset($_SERVER['PHP_AUTH_USER'])
&& $_SERVER['PHP_AUTH_USER'] === 'bioenergysciences'
&& $_SERVER['PHP_AUTH_PW'] === 'mypassword';
if ($_GET['id'] === 1 && !$authenticated) {
header('WWW-Authenticate: Basic realm="My Realm"');
header('HTTP/1.0 401 Unauthorized');
echo 'Text to send if user hits Cancel button';
exit;
}