提问人:Oreliya Fernando 提问时间:6/18/2015 最后编辑:Arnold DanielsOreliya Fernando 更新时间:6/18/2015 访问量:544
如何使用htaccess保护单个php页面?
How to protect a single php page with htaccess?
问:
我想限制网站中的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
答:
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.php
id=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>
评论