Установка пароля на страницу PHP


Оглавление (нажмите, чтобы открыть):

Как закрыть доступ к сайту паролем

Автор: Сергей Коваленко · Опубликовано 31.01.2020 · Обновлено 31.01.2020

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

С подобными задачами отлично справляются штатные функции встроенной защиты WEB-сервера Apache. И для того, чтоб ими воспользоваться не нужно углубленных знаний языков программирования. Достаточно выполнить следующую последовательность действий: создать файл с паролями, назвав его .htpasswd, переписать его на сервер; и создать файл .htaccess, с указаниями по защите, и записать его в директорию на сервере, которую необходимо защитить паролем. Если необходимо защитить паролем полностью весь сайт, то информация файла .htaccess должна находиться в корневой директории.

Как создать файл паролей .htpasswd

.htpasswd, — это обычный текстовой файл, он должен иметь следующую структуру:

user_1:password_1
user_2:password_2
и т.д.

Чтоб создать этот файл откройте приложение «Блокнот» на компьютере, либо другой текстовый редактор, и сохраните новый документ под именем .htpasswd, без расширения txt. При сохранении нового файла выберите кодировку UTF-8.

Далее, на первом этапе придумайте новый логин и сгенерируйте новый пароль, воспользовавшись страницей генератора паролей. Сохраните полученные данные.

Затем, на втором этапе сгенерируйте содержимое файла .htpasswd, воспользовавшись генератором содержимого для .htpasswd. В поле «Логин» укажите придуманный вами логин, в поле «Пароль», — сгенерированный ранее пароль. После чего, полученный результат сохраните в созданном ранее документе .htpasswd.

Обратите внимание, что никакого другого содержимого, кроме как из полученной формы, в файле .htpasswd быть не должно. Созданный на первом этапе логин и пароль нужно будет указывать в поле авторизации на сайте.

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

Доступ к сайту по паролю: простой php-скрипт

С помощью данного скрипта мы защитим страницы нашего сайта паролем. Скрипт довольно простой, а что самое главное очень надежный.

Создадим новый файл php — например, lock.php.

Сначала в нём сделаем подключение к базе данных:

Затем вставим следующее:

На 15 строке находится запрос к базе данных, в данном случае к таблице userlist. Вы можете поменять на любое название, в зависимости от того, как вы назовёте таблицу в БД.

А теперь создайте таблицу userlist (или свое название). В ней нам надо будет создать три поля: id, логин и пароль.

После этого создайте нового пользователя (в PHPmyadmin вкладка вставить).

Осталось только подключить наш скрипт, для этого используйте обычную функцию include с адресом до файла lock.php.

Теперь везде, где вы подключили этот файл, будет запрашиваться пароль, после того, как его введёте, при заходе на другие страничке заново заходить не потребуется. Чтобы сбросить пароль надо перезапустить браузер.

Восстановлени пароля пользователя php + mysq

Привет друзья. В самом начале создания своего блога я написал статью как создать регистрацию и авторизацию на PHP + MySQL. Данная статья стала очень актуальной на моем блоге и требует своего логического продолжения, а именно это восстановление пароля пользователя. Ища информацию на просторах Рунета вы много найдете статей как создать регистрацию и авторизацию пользователей на сайте, но при этом все опускают тот момент, когда пользователь забыл свой пароль. В данной статье мы исправим этот досадный момент.

Восстановление пароля пользователя может быть двух способов:

  • Когда пароль в базе данных хранится не в зашифрованном виде, то вы можете выслать данный пароль пользователю на его email. ( Хранить пароли в открытом виде очень небезопасно и так делать нельзя! ).
  • Второй вариант, когда пароль хранится в зашифрованном виде, например, по средствам md5() и возможность дешифровать его нет. Тогда нужно создавать новый пароль и обновлять запись в таблице.

Рассмотрим структуру нашей таблицы:

У нас есть ID, есть логин, пароль в зашифрованном виде с солью, соль, active_hex и статус пользователя. Исходя из этих данных будем создавать алгоритм восстановления пароля на сайте. Особое внимание нужно уделить полю active_hex так как оно будет непосредственно участвовать в восстановлении пароля пользователя.

Сейчас попробуем описать алгоритм действий для реализации восстановления пароля пользователя на php + mysql.

  • Показываем форму с вводом логина для восстановления.
  • Если такой логин есть, то шлем ему письмо ссылкой и ключом в качестве ключа используем строку из ячейки active_hex.
  • Когда пользователь прошел по ссылке проверяем ключ, если ключ совпадает с полем active_hex то выводим форму с двумя полями для вода нового пароля. Как только пользователь сменил пароль, в целях безопасности генерируем новый active_hex, чтобы никто не смог воспользоваться ссылкой восстановления пароля повторно! Далее отправляем письмо о том, что пароль сменен и ссылку для входа.

  • Пользователь входит с новым паролем.

Я не буду здесь расписывать все скрипты, вы можете ознакомится с ними в первой статье регистрация и авторизация на PHP + MySQL. Здесь я выложу дополнения к данным скриптам.

Мастер Йода рекомендует:  Предохраняйся с помощью сессий. PHP

Как поставить пароль на раздел (директорию, папку) сайта

Бывают случаи, когда нужно ограничить доступ пользователей к определенной папке на сайте (разделу сайта) и пускать туда посетителей только по паролю. Например, в раздел администратора. В этой статье я приведу инструкцию когда в качестве веб-сервера вы используете Apache.

Как настроить доступ по паролю

Во-первых, необходим файл с кодами авторизации, который содержит имена пользователей и их пароли. Во-вторых, необходимо указать веб-серверу, что доступ к этому разделу сайта (папка, директория) возможен только авторизованным пользователям.

Параметры файла .htaccess

Настройка доступа к папке по паролю в веб-сервере Apache производится в служебном файле .htaccess. Этот файл должен находиться в той папке для которой мы настраиваем ограничения. Иными словами, инструкции из файла .htaccess распространяются на ту папку, в которой этот файл расположен.

Чтобы доступ к необходимой нам папке был ограничен необходимо добавить в файл .htaccess следующие строки (если такого файла нет, то создайте его):

Где,
AuthName — это приветствие, которое увидят посетители, вы можете изменить его на свое,
AuthUserFile — полный путь к файлу паролей от корня диска, у вас должен быть свой (не путать с адресом запароленной директории).

Файл .htpasswd нужно размещать вне папок сайта, чтобы к нему не было доступа из интернета.

Формат файла .htpasswd

Файл состоит из строк, в каждой из которых содержатся пары логин и хеш пароля. Логин отделяется от хеша двоеточием. Пример содержимого файла:

Как создать файл .htpasswd

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

Чтобы создать файл с паролями .htpasswd и добавить пользователя используйте команду:

Если файла .htpasswd уже существует, то исключите ключ -c:

Здесь:
/home/username/data/.htpasswd — это полный путь от корня диска к файлу с паролями, а
NewUser — имя пользователя.

При вводе команды вам будет предложено указать пароль, а затем подтвердить его, то есть ввести пароль нужно будет два раза.

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

Проверка работы .htpasswd

Если вы все сделали правильно, то при посещении запароленной папки (раздела на сайте), вы должны увидеть примерно следующее уведомление:

При вводе неправильных данных вы получите стандартное сообщение о 401-й ошибке (несанкционированный доступ, посетитель не авторизован), а при корректных данных — доступ к закрытому разделу сайта.

Благодарности

При написании статьи были использованы следующие источники:

Как защитить веб страницу паролем

В создании этой статьи участвовала наша опытная команда редакторов и исследователей, которые проверили ее на точность и полноту.

Команда контент-менеджеров wikiHow тщательно следит за работой редакторов, чтобы гарантировать соответствие каждой статьи нашим высоким стандартам качества.

Существует множество причин для защиты паролем веб-страниц: важные финансовые или персональные данные, любопытные офисные работники или материалы, не предназначенные для детей. К счастью, в зависимости от платформы и языка программирования, существует несколько способов защиты вашей веб-страницы паролем. Эта статья даст вам общее представление о том, как защитить страницу от посторонних глаз.

Защита выполнения php-скрипта паролем

При написании PHP скриптов иногда требуется ввести дополнительный уровень безопасности их исполнения для того, чтобы они могли быть запущены только администратором сайта (или по крайней мере того, кто знает пароль для запуска этого скрипта на исполнение). Задача защиты выполнения php-скрипта паролем достаточно тривиальная: для этого нужно перед исполнением скрипта запросить пароль и сверить его с тем, что был назначен для защиты скрипта от несанкционированного запуска.

Код защиты паролем выполнения php скрипта

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

Пояснения к PHP скрипту с защитой от выполнения паролем

В строке 6 производится проверка соответствия логина и пароля на значения admin / admin (их конечно нужно поменять). И, если логин и пароль совпадают с этими значениями, то выполняется то, что находится в блоке между фигурными скобками этого условия (между строками 7 и 9). В данном случае, выполняется вывод сообщения echo ‘Логин и пароль указаны верно!’;


Если значения введены неправильно или вообще не введены, то срабатывает условие else в строке 10 и выдаётся вывод HTML формы, в которой запрашиваются логин и пароль:

Для работы нужен логин и пароль

Обработчиком формы назначен тот же скрипт, который выдаёт эту форму. Обратите внимание на параметр action=»» в 15-й строке. Его можно изменить, введя тот скрип, который будет обрабатывать логин и пароль, введённый в этой форме.

Резюме

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

Проверку можно усложнять, разнеся её в разные файлы и/или функции, ввести cookie, чтобы правильно введённые пароли не нужно было вводить каждый раз.

Можно упростить данный скрипт, оставив только ввод пароля (логин мне тут кажется лишним).

Код защиты выполнения php-скрипта паролем будет работать на любой версии PHP в том виде, котором он приведён, что и требуется на первом этапе разработки PHP приложения. =)

О том, как передать логин и пароль в php-скрипте в скрытом поле (hidden) формы для того, чтобы его не нужно было каждый раз вводить, можно прочитать в → этой статье.

Как поставить пароль только для главной страницы PHP сайта?

Здравствуйте. Есть самописный движок на php.
Главная страница у него Index.php

Задача, поставить пароль на доступ к Index.php оставив не тронутыми все каталоги и подкаталоги сайта. То есть пароль должен быть только на главной, реально ли? И если да, то как?

update:
Прошу прощения, не знаю уместно ли. но приведу свой код.

Вот исходник Index.php:

Буду очень признателен за любую помощь, в прошлом верстальщик, в php знания очень минимальны 🙁

  • Вопрос задан более года назад
  • 226 просмотров
Мастер Йода рекомендует:  Скрипт информера курсов валют PHP

Просто напишите, в чем проблема?
Если у вас что то не получается, покажите нам код, который вы писали и расскажите что у вас не выходит.
Мы его посмотрим и возможно поможем.

Во всех остальных случаях, обращаться на https://freelansim.ru

тогда этот сервис для чего.
Если не знаете, то зачем вообще пишите что то.

Скрипт самый не на есть обычный скрипт,

Сервис нужен помогать тем, кто ищет помощи.
Как можно помочь тем, кто сам не помогает себе помочь?!

По мне обычный скрипт — самостоятельный скрипт без авторизации. либо это скрипт авторизации без привязки к index.php

Вот как можно помочь людям дать тебе ответ:

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

Пароль на страницу

Пароль на страницу. Часть 1. Скорее теоретическая.

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

Самый первый вопрос, который обычно встаёт — как закрыть директорию со скрпитами администрирования паролем. При этом не нужно никаких изысков — один или несколько администраторов имеют одни и те же права, а персоналии меняются редко. Проще всего в данной ситуации использовать стандартную серверную авторизацию — положить файлы .htaccess и .htpasswd и прописать в них нужные параметры. Про это уже написано много, поэтому я ничего особо нового не скажу, лучше посмотрите сюда.

Добавлю две вещи. Первое — это куда класть файл .htpasswd. Экспериментальным путем я выяснил, что если, например, путь к документу с сообщением об ошибке (ErrorDocument) пишется относительно системной переменной DocumentRoot. Но путь к файлу с паролями (UserFile) пишется относительно ServerRoot. Насколько я понял, выше ServerRoot положить .htpasswd нельзя — «../» не воспринимается. Всё это сделано для того, чтобы можно было поместить файл с паролями, например, одним уровнем выше корневой директории сайта, чтобы из сети доступа к файлу не было вообще.

Второе — это то, что скрипт может узнать, кто его открывает и пароль: переменные $PHP_AUTH_USER и $PHP_AUTH_PW.

Главный недостаток этого способа — сервер не может блокировать подбор пароля (это после нескольких неудачных попыток входа пользователю предлагается подождать часок-другой, а в течение этого времени обращения с его IP-адреса игнорируются). Это написано в официальной документации по Апачу.

Ещё один недостаток — необходимость переписывать файлы с паролями при удалении пользователя или введении нового. Но если это происходит нечасто, этого способа вполне достаточно, к тому же не придётся забивать голову написанием механизма авторизации.


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

Каждая страница закрытой территории подключает файл с вот таким кодом:

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

Конечно же, пример, который я привёл, имеет ряд существенных недостатков. Не переписывайте его один-в-один, чтобы потом не пасть жертвой попыток подбора пароля, потому что

  • защиты от подбора здесь нет
  • если таблица пользователей большая, при подборе пароля злоумышленник, скорее всего, «завалит» базу

И последний на сегодня способ — хранение зашифрованных данных в куках.

Есть скрипт для входа, остальные подключают код, позволяющий только продолжить действия в закрытой области — если куки истекут, или он выйдет оттуда, придётся возвращаться на страницу для входа.

Входной скрипт проверяет логин и пароль и выдает две куки. В первой — логин, чтобы сразу опознать пользователя (в базе поле логина, естественно, уникальное или даже ключевое). Во второй куке — хэш от времени входа и пароля (для полноты конспирации я добавляю к этим строкам букву «Ы» — тогда хэш подобрать почти невозможно :).

Все остальные программы подключают код, который делает следующее. Делает запрос в базу — выбирает строку с полученным логином. Из этой строки берет поле «log_time» и пароль и делает из них, как и описано выше, хэш. Сравнивает его с тем, что получил, и если они совпадают, выдает новую куку хэша, опять же, от пароля, времени и буквы «Ы» и делает запрос в базу данных «UPDATE user SET log_time=’. ‘ WHERE login=’$cookie_login'».

Опять же, здесь нет никакой защиты от подбора и атаки на сервер (кстати, здесь можно вместо буквы «Ы» писать IP-адрес пользователя — чтобы, например, соседу по офису нельзя было взять файл с кукой и зайти со своего компьютера).

Пароль на страницу. Часть 2. Блокировка подбора

Когда я выложил этот выпуск в прошлый раз, меня запинали на месте, мол такой блокировкой можно и сервер «пустить под откос».

Но сначала о блокировке подбора. Банальности, но всё-таки. Пароль длинной десять символов из букв латиницы и цифр — это очень много вариантов. Если подбирать пароль по 1 000 000 вариантов в секунду, понадобится несколько тысяч лет. Но поскольку такую абракадабру запомнить сложно, мы чаще делаем пароль из осмысленных слов. Несколько лет назад оказалось, что большинство паролей можно подобрать при помощи словаря из 10 000 слов. В своё время в сети появился червь (вирус такой), который лазил по юниксовым серверам, используя их дырки в защите, и подбирал пароли привелигированых пользователей при помощи. системного орфографического словаря Юникса. Ничего таскать не надо было!

Каждый пользователь, пока он не ввёл правильный логин и пароль, считается злобным хакером. С чем же мы имеем дело, когда пользователь вводит что-либо неправильно?

  • забывчивость (на это на приличных сайтах есть формочка «забыл пароль», чтобы отправить на введёный в системных настройках email этот самый пароль)
  • баловство («ибо нефиг»)
  • подбор пароля по словарю (вероятность удачного подбора велика, поэтому закрывать надо, тем более, если сайт коммерческого характера)
  • DoS-атака (чтобы не перегрузить сервер, надо минимизировать действия, которые будет выполнять скрипт в таком случае)
Мастер Йода рекомендует:  Современный язык C++ что нужно знать разработчику

Я долго думал, как можно вызвать перегрузку на сервере, если механизм защиты стоит на файлах. Оказалось, несложно (сколько это будет стоить — другой вопрос). Итак, допустим, сервер не выдержит, если скрипт будет пытаться 1000 раз в секунду открывать файлы на запись и писать в них данные. Поскольку после 5 неудачных попыток войти в систему пользователь будет сразу получать отказ в доступе (без какой-либо записи данных в файл), надо найти 200 уникальных IP, с которых по пять раз и обратиться. Это возможно. Вешаем в баннерокрутилке html-баннер с пятью тегами:

Пользователь моментально делает пять обращений сервер пять раз пишет в файл (кстати, в некоторых броузерах, возможно, выскочит окно для ввода логина и пароля). Можно сделать html-страницу с пятью такими картинками, а саму страницу вставить через iframe на посещаемый сайт (через iframe — чтобы по полю referer не нашли. Вряд ли служба поддержки халявного хостинга будет заниматься такими вещами как копание в лог-файлах в поисках рефереров). Те примеры, которые я привёл, разумеется, натянуты, но сам факт того, что можно воспользоваться таким недостатком системы, доказан. Кстати, нечто подобное уже было.

Но всё-таки приведу этот способ — зря писал, что ли? Его, кстати, можно без особого страха применять для ограниченного количества адресов (например, для локальной сети фирмы), положив в директорию файл .htaccess такого содержания:

А вот код программы:

Впрочем, грех работать с файлами, если есть база. Шутка. Для не прошедших авторизации создаём таблицу:

И вместо обращения к файлам работаем с базой.

Хранить ли старые записи для статистики или нет — дело хозяйское. Если что, их можно удалять, выполняя перед авторизацией запрос:

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

Пароль на страницу. Часть 3. Пароль от базы

Была у меня в своё время проблема: надо закрыть администрационную часть сайта, но при этом я не могу положить файл .htpasswd выше корневой директории сайта. Врождённая подозрительность не позволяла положить файл с паролем и отдельную директорию и заблокировать доступ к ней по http. Решил попробовать сделать защиту как в phpMyAdmin: у пользователя спрашиваются логин и пароль, с которыми скрипт соединяется с базой. В своём анализаторе логов я сделал именно так. Удобство метода в том, что файл можно складывать куда угодно — никаких кук, никаких директив сервера для директории. Заодно, если поменяется пароль в базе данных, не надо ничего исправлять в скрипте.

Распишу метод на примере MySQL. Пишем функцию, например, mysql_die:

В начале программы указываются хост сервера БД и, если надо, имя базы:

А для соединения с базой берутся переменные сервера: $PHP_AUTH_USER и $PHP_AUTH_PW.

И всё. Теперь о недостатках. Разумеется, с такой защитой можно пробовать подбирать пароль (в принципе, можно приделать блокировку, но тогда потеряется вся красота метода). Пароль, как и в случае защитой средствами сервера, пересылается в открытом виде. Но для простых задач такое вполне сгодится.

Как закрыть доступ к сайту паролем

Автор: Сергей Коваленко · Опубликовано 31.01.2020 · Обновлено 31.01.2020

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

С подобными задачами отлично справляются штатные функции встроенной защиты WEB-сервера Apache. И для того, чтоб ими воспользоваться не нужно углубленных знаний языков программирования. Достаточно выполнить следующую последовательность действий: создать файл с паролями, назвав его .htpasswd, переписать его на сервер; и создать файл .htaccess, с указаниями по защите, и записать его в директорию на сервере, которую необходимо защитить паролем. Если необходимо защитить паролем полностью весь сайт, то информация файла .htaccess должна находиться в корневой директории.

Как создать файл паролей .htpasswd

.htpasswd, — это обычный текстовой файл, он должен иметь следующую структуру:

user_1:password_1
user_2:password_2
и т.д.

Чтоб создать этот файл откройте приложение «Блокнот» на компьютере, либо другой текстовый редактор, и сохраните новый документ под именем .htpasswd, без расширения txt. При сохранении нового файла выберите кодировку UTF-8.

Далее, на первом этапе придумайте новый логин и сгенерируйте новый пароль, воспользовавшись страницей генератора паролей. Сохраните полученные данные.

Затем, на втором этапе сгенерируйте содержимое файла .htpasswd, воспользовавшись генератором содержимого для .htpasswd. В поле «Логин» укажите придуманный вами логин, в поле «Пароль», — сгенерированный ранее пароль. После чего, полученный результат сохраните в созданном ранее документе .htpasswd.

Обратите внимание, что никакого другого содержимого, кроме как из полученной формы, в файле .htpasswd быть не должно. Созданный на первом этапе логин и пароль нужно будет указывать в поле авторизации на сайте.

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

Как защитить веб страницу паролем

В создании этой статьи участвовала наша опытная команда редакторов и исследователей, которые проверили ее на точность и полноту.

Команда контент-менеджеров wikiHow тщательно следит за работой редакторов, чтобы гарантировать соответствие каждой статьи нашим высоким стандартам качества.

Существует множество причин для защиты паролем веб-страниц: важные финансовые или персональные данные, любопытные офисные работники или материалы, не предназначенные для детей. К счастью, в зависимости от платформы и языка программирования, существует несколько способов защиты вашей веб-страницы паролем. Эта статья даст вам общее представление о том, как защитить страницу от посторонних глаз.

Добавить комментарий