Каков наилучший способ защиты паролем папки / страницы с помощью php без БД или имени пользователя

каков наилучший способ защиты папки паролем с помощью php без базы данных или имени пользователя, но с использованием. В основном у меня есть страница, которая перечислит контакты для организации и должна защитить эту папку паролем, не имея учетной записи для каждого пользователя . Только один пароль, который получает изменения так часто и распространяется на группу. Я понимаю, что это не очень безопасно, но, тем не менее, я хотел бы знать, как это делать. В лучшем смысле.

было бы неплохо, если бы пароль запоминается на некоторое время, как только пользователь ввел его правильно.


Я делаю примерно то, что предложил Дэвид Хегги, за исключением без печенья. Это кажется небезопасным, как ад, но, вероятно, лучше иметь плохую защиту паролем, чем вообще ничего.

Это для внутреннего сайта, где люди будут иметь адское время, помня свой логин и пароль, и никогда не будет проходить через зарегистрируйтесь

5 ответов


вы можете использовать что-то вроде этого:

//access.php

<?php
//put sha1() encrypted password here - example is 'hello'
$password = 'aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d';

session_start();
if (!isset($_SESSION['loggedIn'])) {
    $_SESSION['loggedIn'] = false;
}

if (isset($_POST['password'])) {
    if (sha1($_POST['password']) == $password) {
        $_SESSION['loggedIn'] = true;
    } else {
        die ('Incorrect password');
    }
} 

if (!$_SESSION['loggedIn']): ?>

<html><head><title>Login</title></head>
  <body>
    <p>You need to login</p>
    <form method="post">
      Password: <input type="password" name="password"> <br />
      <input type="submit" name="submit" value="Login">
    </form>
  </body>
</html>

<?php
exit();
endif;
?>

затем на каждый файл, который вы хотите защитить, поместите вверху:

<?php
require('access.php');
?>
secret text

это не очень хорошее решение, но оно может сделать то, что вы хотите

редактировать

вы можете добавить выход из системы.php страница как:

<?php
    session_start();
    $_SESSION['loggedIn'] = false;
?>
You have logged out   

предполагая, что вы на Apache:

http://httpd.apache.org/docs/1.3/howto/htaccess.html#auth


Если вы хотите избежать cookies, сеансов и не хотите играть .htaccess файлы, вы также можете сделать HTTP аутентификации soley с PHP:

http://www.php.net/manual/en/features.http-auth.php

вы можете жестко закодировать пароль в файл и изменить его по мере необходимости или включить его из файла, не находящегося в вашем каталоге web_accessible.

недостатком является то, что у вас нет возможности форматировать экран "вход" - это будет стандарт диалоговое окно проверки подлинности http


Я сомневаюсь, что это будет засчитываться как лучшие wasy делать это, но это сработает. И поскольку безопасность, кажется, не является большой проблемой для вас, тот факт, что этот путь небезопасен, как ад, вероятно, не будет беспокоить вас.

у входа.php-страница, которая принимает пароль, а затем устанавливает cookie, если данные для входа верны. Каждый файл php может затем проверить наличие файла cookie, чтобы определить, является ли пользователь "вошел в систему" или нет, и отобразить информация соответственно.

login.php
...
if(isset($_POST['password']) && $_POST['password'] == 'my_top_secret_word') {
    setcookie('loggedin', 'true', time() + 1200, '/url/');
} else {
    setcookie('loggedin', 'false', time() - 1200, '/url/');
    // display a login form here
}
etc

каждая "защищенная" страница будет проверять наличие этого файла cookie:

if(isset($_COOKIE['loggedin'])) {
    if($_COOKIE['loggedin'] == 'true') {
        $showHidden = true;
    } else {
        $showHidden = false;
    }
} else {
    $showHidden = false;
}

Я уверен, что вы получите (очень неуверенно) идея ...


Ну, так как ты знаю это небезопасно для начала, вы можете сохранить пароль в текстовом файле где-то на вашем веб-сервере. Когда кто-то обращается к странице, вы можете показать форму, которая запрашивает пароль. Если пароль совпадает с тем, что находится в текстовом файле, перезагрузите страницу и отобразите информацию. Использование текстового файла позволит вам изменить пароль без необходимости изменять страницу, к которой они обращаются, когда вы хотите ее изменить. Ты все еще будешь отправка открытого текста везде, если вы не используете SSL. Дай мне знать, если тебе понадобится код.