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

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

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


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

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

Я хотел увидеть другие решения этой проблемы.

С пользовательской базой, состоящей из не очень высокотехнологичных людей, каковы другие способы сделать это.

Ответ 1

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

//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

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

Edit

Вы можете добавить страницу logout.php, например:

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

Ответ 3

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

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

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

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

Ответ 4

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

Имейте страницу login.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;
}

Я уверен, что вы получаете (крайне небезопасную) идею...

Ответ 5

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