PHP站点管理认证页面

时间:2012-07-14 20:16:12

标签: php authentication

我为我的php网站创建了一个管理页面。我有一个我想要保护的管理页面(只允许我访问)。

在不创建完整的登录系统的情况下,保护此页面的最简单方法是什么?这感觉有点矫枉过正,我害怕创建安全漏洞。我没有其他网站登录系统的其他需求。

其他人做过这样的建议或想法吗?

6 个答案:

答案 0 :(得分:1)

当你要求最简单的方法时,

您可以使用您的IP进行比较:

$myIP="your-ip-here";

if($_SERVER['REMOTE_ADDR']!=$myIP){exit();}

也许你也可以做一些比较的参数:

$myIP="your-ip-here";
$myGetParamPass="password";

if($_SERVER['REMOTE_ADDR']!=$myIP || $_GET['pass']!==$myGetParamPass){exit();}

然后使用您的IP地址和此链接访问该页面:

www.site.com/page.php?pass=password

但是,如果您使用的是经常更改的动态IP,则上述方法将无济于事。

答案 1 :(得分:1)

我找到了使用“Htaccess”为单个用户创建安全区域的最简单方法。

示例:

http://webdesign.about.com/od/htaccess/ht/hthtaccess.htm

但这不是PHP或Mysql - 而是Apache。

答案 2 :(得分:1)

我能想象的最简单的方法是

  <?php
    session_start();
    if(isset($_POST['send'])){
      if($_POST['pw'] == "somepassword"){
        $_SESSION['LOGIN'] = true;
      }
    }

    if(isset($_SESSION['LOGIN'])){
      //your page
    }else{ ?>
      <form method="post" action=""> <p>Password:</p>
        <input name="pw" type="password" />
        <input name="send" value="send" type="submit" />
      </form>
    <?php 
    }
    ?>

答案 3 :(得分:0)

创建一个cookie(只使用一次setcookie(“admin”,“我是管理员”,时间()+ $ temps);或手动创建它,并在每个网页中使用以下代码:

if (isset($_COOKIE['admin'])) { 
      //Do something 
} 
else { die(); }

答案 4 :(得分:0)

最简单的方法是:

<?
  session_start();
  $user = 'YOUR_USERNAME';
  $password = 'YOUR_PASSWORD';
  if($_POST['user'] == $user  && $_POST['password'] == $password){
      $_SESSION['logged'] = true;
  }else{
       $_SESSION['logged'] = false;
   }

  if($_SESSION['logged']){
      echo "Logged in"
  }else{
      echo "Acces denied";
  }
?>

答案 5 :(得分:-1)

ScreenShot of the thing working

<?php
$realm = 'Restricted area';

//user => password
$users = array('Username123123' => 'Password1112313', 'Guest' => 'guest');

if (empty($_SERVER['PHP_AUTH_DIGEST'])) {
    header('HTTP/1.1 401 Unauthorized');
    header('WWW-Authenticate: Digest realm="'.$realm.
           '",qop="auth",nonce="'.uniqid().'",opaque="'.md5($realm).'"');

    die('<h1>HTTP/1.1 401 Unauthorized</h1>');
}

// analyze the PHP_AUTH_DIGEST variable
if (!($data = http_digest_parse($_SERVER['PHP_AUTH_DIGEST'])) ||
    !isset($users[$data['username']]))
    die('<h1>Wrong Credentials!</h1>');


// generate the valid response
$A1 = md5($data['username'] . ':' . $realm . ':' . $users[$data['username']]);
$A2 = md5($_SERVER['REQUEST_METHOD'].':'.$data['uri']);
$valid_response = md5($A1.':'.$data['nonce'].':'.$data['nc'].':'.$data['cnonce'].':'.$data['qop'].':'.$A2);

if ($data['response'] != $valid_response)
    die('<h1>Wrong Credentials!!</h1>');

echo 'Your are logged in as: ' . $data['username'] . '<hr />';


// function to parse the http auth header
function http_digest_parse($txt)
{
    // protect against missing data
    $needed_parts = array('nonce'=>1, 'nc'=>1, 'cnonce'=>1, 'qop'=>1, 'username'=>1, 'uri'=>1, 'response'=>1);
    $data = array();
    $keys = implode('|', array_keys($needed_parts));

    preg_match_all('@(' . $keys . ')=(?:([\'"])([^\2]+?)\2|([^\s,]+))@', $txt, $matches, PREG_SET_ORDER);

    foreach ($matches as $m) {
        $data[$m[1]] = $m[3] ? $m[3] : $m[4];
        unset($needed_parts[$m[1]]);
    }

    return $needed_parts ? false : $data;
}
?>