如何使用htaccess保护单个php页面?

How to protect a single php page with htaccess?

提问人:Oreliya Fernando 提问时间:6/18/2015 最后编辑:Arnold DanielsOreliya Fernando 更新时间:6/18/2015 访问量:544

问:

我想限制网站中的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> 

然后我在一个名为“password”的文件夹中创建了文件。因为如果我们在根文件夹中创建它,这是不安全的。.htpasswd

然后,我将生成的密码添加到此文件中。 我的 .htpasswd 文件是这样的。

bioenergysciences:NnrhAhZ/Nc912
php .htaccess

评论


答:

1赞 Arnold Daniels 6/18/2015 #1

应将文件名命名为 。或者,您可以使用 <Location><Files>

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,这与提到的位置不匹配并规避保护。

如果你不想保护整体而只想保护,那么在php中实现基本的认证innerpage.phpid=1

$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;
}

评论

0赞 Oreliya Fernando 6/18/2015
谢谢Jasny。我成功了。但随后它会显示错误错误 500 - 内部服务器错误。而且我无法访问整个网站。
0赞 Arnold Daniels 6/18/2015
请从错误日志中获取错误并将其发布在此处。
0赞 Oreliya Fernando 6/18/2015
当我添加您给我的上述代码时,我无法访问所有内页。有没有办法限制具有特定 ID 的页面?
0赞 Oreliya Fernando 6/18/2015
[2015年6月17日 04:37:19 美国/芝加哥]PHP警告:include(includes/contact_header.php):无法打开流:在第9行的/home/bioenerg/public_html/email-submit.php中没有这样的文件或目录[17-Jun-2015 04:37:19 America/Chicago] PHP警告:include(includes/contact_header.php):无法打开流:第9行的/home/bioenerg/public_html/email-submit中没有这样的文件或目录.php
0赞 Arnold Daniels 6/18/2015
@OreliyaFernando 这些是 PHP 警告,与 .<files>