如何通过了解管理页面网址来阻止管理页面的访问?

时间:2009-12-02 10:25:41

标签: php html authentication .htaccess

如果有人知道管理页面的网址,例如www.example.com/admin.php,那么他们可以通过直接访问该网址轻松访问该网页。如何限制这一点。请帮忙

7 个答案:

答案 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!