如果有人知道管理页面的网址,例如www.example.com/admin.php,那么他们可以通过直接访问该网址轻松访问该网页。如何限制这一点。请帮忙
答案 0 :(得分:7)
您永远不应该将管理部分公开。你不能依靠默默无闻,授权是要走的路。您可以使用.htacces,as described here或依赖PHP来完成此操作。下面是一个粗略的例子。
以下是一个简单的登录实现。如果密码正确,则允许用户转到admin.php。您应该在会话上阅读the PHP manual,因为会话标题应该出现在登录页面后面的每个页面上。密码处理也可以更安全地处理。
<?php
session_name('MyAdminSession');
session_start();
if (isset($_POST['userid']) && isset($_POST['password'])) {
$userid = $_POST['userid'];
$password = md5($_POST['password']);
if ($userid == 'myusername' && $password == md5('mypassword')) {
$_SESSION['logged_in'] = true;
header('location: admin.php');
exit;
}
}
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="nl">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>My login page</title>
</head>
<body>
<form action="index.php" method="post">
<label for="userid">Username: </label><br />
<input name="userid" type="text" id="userid" /><br />
<label for="password">Password: </label><br />
<input name="password" type="password" id="password" /><br />
<p><input type="submit" name="submit" class="button" value="Log In" /></p>
</form>
</body>
</html>
答案 1 :(得分:2)
需要身份验证。 (和授权 - 如下评论!)
10x @Just Somebody!
答案 2 :(得分:1)
如果您使用apache Web服务器,则可以使用.htaccess限制访问 附:看看这里:htaccess tutorial
答案 3 :(得分:1)
我将尝试为您提供一些这些答案,具体取决于您的网站设置方式。
如果它是一个更简单的网站,并且您没有进行任何用户处理或管理员身份验证,那么您的主要选项是根据.htaccess文件执行igorp所说和限制。 您将获得一个弹出窗口,询问预定义的用户名和密码,然后才能访问该特定页面。
同样,这对于更简单的网站也是有益的。
如果它更复杂且您允许用户登录您的站点,则可以根据用户访问级别设置对各个页面的访问权限。
例如,在您的管理页面中,您将检查用户的访问级别,以查看是否应允许他/她访问该页面。如果他没有,则重定向到访问被拒绝类型页面。否则,让他们进去。
使用这两种方法,用户可以直接浏览管理页面,并需要进行某种验证。无论哪种方式,您的管理页面都将受到保护。
答案 4 :(得分:1)
除管理员IP外,您可以阻止所有IP进入管理面板 写下这样的东西:
order allow,deny
deny from all
allow from {your IP}
allow from {your other admin's IP}
这应该是工作
答案 5 :(得分:0)
如果您有cPanel(或类似的控制面板)访问权限,您也可以轻松创建受密码保护的目录。此方法使用htpasswd和htaccess文件。如果以这种方式进行设置,任何试图访问受保护目录的人都必须输入用户/密码。唯一的缺点是你的管理文件需要在他们自己的目录中。
答案 6 :(得分:0)
如果我需要快速身份验证,我使用HTTP身份验证,假设您使用的是Apache网络服务器,这非常简单:
$USERS = array( 'foo' => 'bar' );
$user = (isset($_SERVER['PHP_AUTH_USER'])) ? $_SERVER['PHP_AUTH_USER'] : '';
$pass = (isset($_SERVER['PHP_AUTH_PW'])) ? $_SERVER['PHP_AUTH_PW'] : '';
if( !$user || !isset($USERS[$user]) || $USERS[$user] != $pass ) {
header('WWW-Authenticate: Basic realm="My Realm"');
header('HTTP/1.0 401 Unauthorized');
print '<h1>Error</h1>Authentication failed!';
exit;
}
// if we made it this far the user logged in successfully!