Каков наилучший способ защиты паролем папки с использованием php без базы данных или имени пользователя, но с использованием. В основном у меня есть страница, в которой будут перечислены контакты для организации, и вам необходимо защитить паролем эту папку, не имея учетной записи для каждого пользователя. Только один пароль, который меняется каждый раз так часто и распространяется в группу. Я понимаю, что это не очень безопасно, но тем не менее я хотел бы знать, как это сделать. Наилучшим образом.
Было бы неплохо, если бы пароль запоминался некоторое время, как только пользователь правильно вводил его.
Я делаю примерно то, что предложил Дэвид Хегги, кроме печенья. Кажется, это небезопасно, но, вероятно, лучше иметь плохую защиту паролем, а потом вообще нет.
Это для внутреннего сайта, где люди будут чертовски вспоминать свой логин и пароль и никогда не будут проходить процесс регистрации … если это действительно просто, они вообще не будут использовать систему.
Я хотел увидеть другие решения этой проблемы.
С базой пользователей, состоящей из не очень высокотехнологичных людей, каковы другие способы сделать это.
Вы можете использовать что-то вроде этого:
//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
Это не очень хорошее решение, но оно может делать то, что вы хотите
редактировать
Вы можете добавить страницу logout.php, например:
<?php session_start(); $_SESSION['loggedIn'] = false; ?> You have logged out
Предполагая, что вы на Apache:
Если вы хотите избежать куки-файлов, сеансов и не хотите играть с файлами .htaccess, вы также можете использовать http-аутентификацию soley с PHP:
http://www.php.net/manual/en/features.http-auth.php
Вы можете жестко скопировать пароль в файл и изменить его по мере необходимости или включить его из файла, который не находится в вашем каталоге web_accessible.
Недостатком является то, что у вас нет возможности форматировать экран входа в систему – это будет стандартное диалоговое окно проверки подлинности HTTP
Я сомневаюсь, что это будет считаться лучшим из них, но это сработает. И так как безопасность не кажется большой проблемой для вас, то факт, что этот способ небезопасен, как, черт побери, тоже вас не беспокоит.
Имейте страницу login.php, которая берет пароль, а затем устанавливает cookie, если данные для входа верны. Каждый php-файл может затем проверить наличие куки-файла, чтобы определить, «не зарегистрирован ли пользователь» или нет, и соответственно отображать информацию.
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. Дайте мне знать, если вам нужен код.