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


Содержание

Пароль на любую страницу вашего сайта на uKit

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

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

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

Протестировать функционал, вы можете на нашей демо-странице: скриншот.
Пароль для демо-страницы установлен: 123, в случае если посетитель вашего сайта будет вводить неверный пароль, то он будет переадресован на страницу, которую укажите вы. Например, это может быть страница с оплатой для получение доступа к закрытой странице.

Установка

Перейдите в панель управления вашего сайта в раздел «Свой код». В редактор вставьте следующий код:

Во вкладке «Настройки» в разделе «Выводить код» отметьте пункт «В ». (скриншот) и выберите необходимые страницы для которых будет установлен пароль.
Сохраните код и опубликуйте ваш сайт.

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

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

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

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

Защита паролем страницы

2.01.13 10.01.13 2 26109

Как защитить страницу от посторонних глаз? Часто бывают случаи, когда на сайт нужно поместить страницу, к которой имели бы доступ только «свои» люди. Так вот этот скрипт вам в этом и поможет. Он показывает код страницы, размещенной до кода скрипта, а затем запрашивает пароль. Если пароль верный, то продолжает открывать страницу, а в противном случае отсылает на другую.

= Плюсы=

  • быстрая работа (в отличии от подобного cgi скрипта)
  • легкое администрированние
    =======
    = Минусы=
  • пока можно использовать только один пароль
    =======

Установка:
Поместите в любое место тегов или

Доступ к странице по паролю в всплывающем окне

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

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

Доступ к странице по паролю в всплывающем окне

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

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

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

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

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

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

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

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

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

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

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

$result = mysql_query(«SELECT * FROM person WHERE login='». preg_replace(«/[^\\w_-]/»,»»,$PHP_AUTH_USER). «‘ AND pass='». md5($PHP_AUTH_PW). «‘»);
if (@mysql_num_rows($result)!=1)
<
header(«WWW-Authenticate: Basic realm=\»User area\»»);
header(«HTTP/1.0 401 Unauthorized»);
print(«Чтобы войти в пользовательскую часть сайта, надо ввести имя и пароль.»);
exit();
>;
$user_row = mysql_fetch_array($result);

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

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

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

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

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

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

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

if (isset($HTTP_COOKIE_VARS[$cookie_login]) &&isset($HTTP_COOKIE_VARS[$cookie_code]))
<
$login = $HTTP_COOKIE_VARS[$cookie_login];
$code = $HTTP_COOKIE_VARS[$cookie_code];
$result = mysql_query(«SELECT date_format(log_date,’%Y%m%d%H%i%s’) as log_date1,
pass,uid FROM user
WHERE email=’$login’
AND log_date>’DATE_SUB(NOW(),INTERVAL 15 MINUTE)'»);
if (!mysql_error() && @mysql_num_rows($result)==1)
<
$log_time0 = time();
$log_time1 = date(«YmdHis», $log_time0);
$log_time2 = date(«Y-m-d H:i:s», $log_time0);
$current_user = mysql_fetch_array($result);
if (md5($current_user[«pass»].$current_user[«log_date1»].$md5letter) == $code)
<
mysql_query(«UPDATE user SET log_date=’$log_time2′
WHERE u ]);
setcookie($cookie_code, md5($current_user[«pass»].$log_time1.$md5letter),
time()+900, $site_path);
$auth = true;
>
else unset($current_user);
>
>

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

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

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

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

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

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

Илон Маск рекомендует:  Что такое код asp logextfileflags

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

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

order deny,allow
deny from all
allow from xxx.xxx.xxx

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

$errors = 0;
$fn = «ignore/». preg_replace(«[^\d\.]», «», $REMOTE_ADDR. «.». $HTTP_FORWARDED_FOR);
if (is_file($fn))
<
if (filectime($fn) 5)
<
print («Доступ закрыт. Зайдите через час.»);
exit();
>

// здесь происходит установка связи с сервером БД.
// чтобы не трогать зря, если пользователя сразу же «отлупили».

Скрипт пароля на страницу для Blogger


Не смог найти на вашем блоге, как сделать доступ к какой-нибудь странице по паролю. В вордпресе, как то проще с этим.

При написании статьи нужно перейти на вкладку «HTML», где первой строкой добавить скрипт

Веб-документ при этом показывается до размещённого выше кода, а затем запрашивает пароль. Это решение применимо лишь для простых задач, так как для «взлома» пароля достаточно отключить JavaScript в настройках браузера.

Надёжное решение

  1. Завести новый специальный блог
  2. Настройки -«Основное»-«Основное»-«Конфиденциальность»-на оба вопроса-«Нет»
  3. Настройки -«Основное»-«Разрешения»-«Читатели блога»-«Только эти читатели»-«Добавить читателей»-в поле вводим адреса электронных почт через запятую. Этим людям на email придёт приглашение. Подробнее.

21 комментарий:

Анонимный Не смог найти на вашем блоге, как сделать доступ к какой-нибудь странице по паролю. В вордпресе, как то проще с этим.

Может, я чего-то не догоняю, но зачем закрывать доступ к странице по паролю? Ведь даже википедия гласит, что «Отличия блога от традиционного дневника обусловливаются средой: блоги обычно публичны и предполагают сторонних читателей, которые могут вступить в публичную полемику с автором (в комментарии к блогозаписи или своих блогах).»
Уж слишком секретную информацию проще скинуть по почте получателю или группе получателей. NMitra Сейчас модно стало продавать инфопродукт. Либо, например, предоставлять какую-нибудь информацию только подписчикам.

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

Это всего лишь инструмент, который можно использовать по разному. Анонимный Это всего лишь инструмент, который можно использовать по разному.

Может быть так оно и есть. Каждому своё. aldous А я углядел в этом скрипте другое назначение. Страница до 18 вход запрещён. Таким образом можно сделать на блогспоте посещаемый сайтик и не нарушать законы. Елена и Александр Никитины Наталья, еще раз спасибо за подсказку и ваш блог. С уважением, Александр. NMitra aldous, а в настройках Blogger уже есть соответствующая галка: «Настройки»-«Другое»-«Содержимое только для взрослых?»-«Да/Нет».

Как поставить пароль на папку сайта с помощью «.htaccess» (закрываем админку Joomla, Word-Press и т.д.)

Объясняю по простому, в сложные детали не вдаваясь. Все действия будем делать через файл «.htaccess». Все подробности расскажу позже. Если что-то не понятно — задавайте вопросы в комментариях. На все отвечу.

Для чего вообще это может потребоваться.

У меня возникла ситуация, что за превышение допустимых ресурсов на сервере, хостер отключил мой сайт. Я стал звонить хостеру, разбираться: «как же такое может быть, что на сайт заходит максимум 200 человек в день, а вы его отключаете за превышение ресурсов?» Стали разбираться, оказалось, что все дело в том, что кто-то постоянно заходит на страницу административной панели Joomla и пытается подобрать пароль к сайту. Из-за этого и происходит превышение ресурсов, т.к. при каждой попытке авторизации тратится довольно большое количество процессорного времени. Т.е. мало того, что эти гады перенагрузили мой хостинг, так они еще и пароль к моему сайту подобрать пытались.

Вот статистика за 1 день, которую мне прислал хостер:
«2012-11-17 к Вашему сайту было произведено 22389 обращений, из них 15598 с ip-адреса 217.7.236.238″

Что делать?

Есть несколько методов защиты от такой попытки взломать сайт. Во-первых, я сразу закрылся от этого злополучного ip-шника. (Просто дописал в корневом файле «.htaccess» следующее содержимое:

Order Allow,Deny
Deny from x.x.x.x
Allow from All

Где x.x.x.x — злополучный ip. Что это за такой файл расскажу ниже. Этот файл вы можете найти в корневой директории сайта на Вашем хостинге.)

И, во-вторых, поставил пароль на вход на страничку с доступом к админке (на Joomle это «mysite.ru/administrator»).

Немного теории.

Есть такой файл «.htaccess». Он предназначен для конфигурирования работы сервера Apach. Особых подробностей про этот файл Вам знать не нужно. Скажу просто, что этот файл есть почти на всех распространенных хостингах. И доступ к нему можно получить только с помощью ftp. С помощью этого файла обычно задаются такие операции, как редирект со страницы без www на страницу c www, настройка отображения 404 страницы и др.

Свое действие по настройкам файл распространяет на ту директорию, в которую он вложен. Т.е. если он лежит в корневой директории, то распространяется на весь сайт. Создавать и редактировать этот файл удобно с помощью бесплатной утилиты «Notepad++» (расширение функциональности стандартного блокнота windows, всем рекомендую. ).
В-принципе, можно редактировать и обычным блокнотом. Дело Ваше. Разницы особой нет.

Ставим пароль на папку «/administrator» для ограничения доступа к админке Joomla.

1) Создаем у себя на компьютере файл «.htaccess», с содержимым:
AuthType Basic
AuthName «Please input login and password!»
AuthUserFile @path@/.htpasswd
require valid-user

В поле @path@ мы впишем абсолютный путь к файлу «.htpasswd», в котором будет храниться наш логин-пароль. На хостинге hoster.ru этот путь у меня имеет следующий вид: «/usr/home/akknum/site.ru/shadow/.htpasswd», а на хостинге nic.ru: «/home/akkname/my-files-password/.htpasswd». Подробнее об этом расскажу ниже.

2) По ftp закачиваем этот файл в папку «/administrator».

3) Нам нужно создать файл, в котором будет храниться наш логин-пароль. Для его создания нам нужно будет использовать бесплатную утилиту «htpasswd». Скачиваете утилиту, запускаете файл «htpasswd (GUI).exe». Возникнет такое окошко:

В нем нужно нажать клавишу «Old file». Выбрать уже существующий файл «.htpasswd» и добавить новые данные логин-пароль. (см на картинке — логин admin, пароль — 12345678).

Сохраняем файл. На всякий случай, редактируем с помощь notepad++ и закачиваем по ftp в нужную нам папку.
По поводу папки стоит остановиться подробнее. Нам желательно, чтобы это была папка, которую невозможно посмотреть из браузера. У моего хостера (hoster.ru) для этих целей была специальная папочка «/shadow». Именно в нее я закачал этот файл. В принципе, для этих целей может подойти любая папка вне главной папки сайта. Главное, чтобы у нас был доступ на редактирование этой папки. Если у Вас, дорогие читатели, нет доступа к этой папке, то не беда, можно защить от доступа извне любую папку, просто прописав в соответствующем файле «.htaccess»:

Теперь вернемся к пункту 1. В нем мы создавали файл «.htaccess», в котором содержался путь к файлу «.htpasswd». Так вот, путь этот должен быть абсолютным (если не знаете что это значит, то — рекомендую позвонить с таким вопросом хостеру, он подскажет, как узнать абсолютный путь к папке).

Ставим пароль на файл «wp-login.php» для ограничения доступа к админке Word-Press.

Порядок действий будет точно таким же, как раньше, только теперь в корневом файле «.htaccess» мы пропишем следующее содержимое:

AuthName «Please input login and password!»
AuthType Basic
AuthUserFile @path@/.htpasswd
require valid-user

В остальном процедура такая же, как с админкой Joomla, только файл ».htaccess» немного отличается и лежит не в папке administrator, а в корневой папке сайта.

В принципе — все.

По сути, все что мы сделали — подготовили 2 файла — «.htaccess» и «.htpasswd» и закачали их в специальные директории.

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

Профиль
Группа: Участник
Сообщений: 30
Регистрация: 26.8.2006
Где: планета Земля

Репутация: нет
Всего: 14

Всем доброе время суток!

Теперь возник вопрос, который я не знаю в какой форум задать.

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

Уважаемые Мастера, Как это сделать?

Профиль
Группа: Участник
Сообщений: 101
Регистрация: 1.7.2006

Репутация: нет
Всего: 3


В Апач можно запаролить страницу просто при помощи .htaccess

Добавлено @ 20:21
Да, еще: если не Апач или нет возможности изменять .htaccess, то есть масса программ типа HTML Password Lock и просто JS-скриптов, которые решают эту задачу так или иначе. Признаюсь: я их не пробовал и о качестве судить не могу. Наберите в поисковике «защитить HTML страницу паролем», и они вылезут массово.

Ну и, конечно, остаются серверные скрипты — надежный и проверенный способ.

ElGuapo
Дата 31.8.2006, 20:17 (ссылка) | (нет голосов) Загрузка .

Профиль
Группа: Участник
Сообщений: 290
Регистрация: 14.7.2006
Где: Tallinn

Репутация: нет
Всего: 8

griker
Дата 31.8.2006, 23:21 (ссылка) | (нет голосов) Загрузка .

Профиль
Группа: Участник
Сообщений: 30
Регистрация: 26.8.2006
Где: планета Земля

Репутация: нет
Всего: 14

Большое спасибо ELGuapo и Griker за ответ.

Но мне это как новичку очень тяжело воплотить. А запаролить нуна.

я просто не знаю JS и сама не смогу написать.
Доступ к .htaccess врядли будет.
Страницы все в html поэтому php тоже как понимаю не подойдет (я в php полный ламер)

Вариант с JS где пароль видно если смотреть страницу в блокноте — тож не то.

Люди добрые. Помогите.
Я в ожидании помощи.

Мастера, верю в Вас..

Добавлено @ 23:29
Только что попробовала вариант, предложенный griker’ом.
Результат превзошел все ожидания: страница открылась. полностью. сверху выпала желтая строка (типа безопасность IE сработала на активный скрипт) и после того как я разрешила выполнение скриптов на странице — меня перебросло на www.ins.ru — это как. страница сохранена на персональном компе и никаких внешних линков не содержит. Дык моя страница даже не попросила пароль. просто переадресанула на вышеукзанный неизвестныц ранне мне сайт.

Добавлено @ 23:37
Такс.
www.ins тут не при чем. Туплю просто.

Ситуация такая — после разрешения выполнению активных элементов страницы в IE меня бросает (без запроса пароля) на страницу которую укажу в качестве топ локации. При этом содержимое «запороленной» страницы — как на ладони.

Djuicy
Дата 31.8.2006, 23:25 (ссылка) | (нет голосов) Загрузка .

Профиль
Группа: Участник
Сообщений: 290
Регистрация: 14.7.2006
Где: Tallinn

Как поставить пароль на html страницу. Ставим пароль на страницу

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

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

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

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

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

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

Автоматизация авторизации

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

order deny,allow
deny from all
allow from xxx.xxx.xxx

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

$errors = 0; $fn = «ignore/». preg_replace(«[^d.]», «», $REMOTE_ADDR. «.». $HTTP_FORWARDED_FOR); if (is_file($fn)) < if (filectime($fn) 5) < print ("Доступ закрыт. Зайдите через час."); exit(); >; // здесь происходит установка связи с сервером БД. чтобы не трогать зря, если пользователя сразу же «отлупили». $result = mysql_query(«SELECT * FROM user WHERE login=»». preg_replace(«/[^w_-]/», «», $PHP_AUTH_USER). «» AND pass=»». md5($PHP_AUTH_PW). «»»); if (@mysql_num_rows($result)!=1) < header("WWW-Authenticate: Basic realm="secret area""); header("HTTP/1.0 401 Unauthorized"); print ("Authorization required"); fwrite(fopen($fn, "w"), ++$errors); exit(); >; $current_user = mysql_fetch_array($result); mysql_free_result($result); Впрочем, грех работать с файлами, если есть база. Шутка. Для непрошедших авторизаций создаём таблицу: CREATE TABLE unauth (username VARCHAR(64) NOT NULL, pass VARCHAR(64) NOT NULL, ip VARCHAR(255), logintime TIMESTAMP) И вместо обращения к файлам работаем с базой. $errors = @mysql_result(mysql_query(«SELECT count(username) as falses FROM unauth WHERE logintime>DATE_SUB(NOW(),INTERVAL 1 HOUR) AND ip=»$REMOTE_ADDR»»),0); if (mysql_error()) die(mysql_error()); if ($errors>5) < print ("Доступ закрыт. Зайдите через час."); exit(); >; $result = mysql_query(«SELECT * FROM user WHERE login=»». preg_replace(«/[^w_-]/», «», $PHP_AUTH_USER). «» AND pass=»». md5($PHP_AUTH_PW). «»»); if (@mysql_num_rows($result)!=1) < header("WWW-Authenticate: Basic realm="secret area""); header("HTTP/1.0 401 Unauthorized"); print ("Authorization required"); mysql_query("INSERT INTO unauth (username, pass, ip) VALUES ("$PHP_AUTH_USER", "$PHP_AUTH_PW", "$REMOTE_ADDR $HTTP_X_FORWARDED_FOR")"); exit(); >; $current_user = mysql_fetch_array($result); mysql_free_result($result);

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

DELETE FROM unauth WHERE logintime param(«login»); $p = $query->param(«password»); if(($p eq $password) && ($l eq $login))< $address = $ok;>print $query->redirect($address);

griker
Дата 31.8.2006, 23:40 (ссылка) | (нет голосов) Загрузка .
Password check

Чтобы справиться с первым недостатком, можно динамически сформировать новую страницу на основе спрятанной где-то там внутри, не выдавая при этом URL.

#!/usr/bin/perluse CGI qw(:standard); $query = new CGI; $ok = «ok.html»; $address = «bad.html»; $docroot = $ENV<"DOCUMENT_ROOT">; $localpath = «/articles/»; $login = «login»;$password = «password»; $l = $query->param(«login»); $p = $query->param(«password»); if(($p eq $password) && ($l eq $login)) < $address = $ok;>print $query->header(); open (FL, $docroot.$localpath.$address); while( ) <# Здесь заодно можно на лету модифицировать html-код# Зачем? Ну мало ли. :) print $_;>close (FL);


Password check

Как видно, URL файла уже не светится, правда ценой SSI (впрочем, их как раз можно отлавливать при выводе и обрабатывать вручную).Но и здесь остается теоретическая возможность угадывания URL, при этом не надо забывать, что медвежьюуслугу могут сослужить всевозможные картинки, включаемые в страницы — при использовании относительных путей,конечно.

Наконец, наиболее надежный способ установки пароля на доступ — это воспользоваться средствами сервера -не зря ж их люди делали, в конце концов. Остановлюсь на двух — Апаче как самом популярном и IIS кактоже популярном:)

С IIS все совсем просто — защита осуществляется средствами NTFS, что, конечно, несколько ограничивает возможности не-администраторов сервера. Идея следующая: у пользователя IUSR_xxxx, под аккаунтомкоторого по умолчанию работают все посетители узла, отбирается доступ к желаемому файлу/каталогу. После чего доступ к этим файлам будут иметь только те пользователи, для которых это явно указано в Properties->Security. Понятно, что их гораздо удобнее объединять в группы. Здесь есть пара тонкостей. Во-первых, указанным пользователямдолжно быть дано право Logon locally (Policies->User Rights в User Manager»е). Во-вторых, если не выбратьв настройках WWW service Basic authentication (Clear Text), внутрь будут пропущены только пользователиInternet Explorer»а.

В Apache все делается несколько иначе. Защита ставится на уровне каталогов. Соответствующие директивы могут быть помещены как в общий конфигурационный файл php.ini, так и в файлы.htaccess . Набор директив в обоих случаях одинаков, а для большинства людей, арендующих место под сайт/страницу на чужом сервере, первый вариант недоступен. Итак, вы создаете в каталоге, доступ к которому планируется ограничить, файл.htaccess , после чего вставляете в него следующие директивы:

AuthType тип контроля — обычно используется Basic.

AuthName имя — задает имя области, в которой действительны имена и пароли пользователей. Это то самое имя, которое броузер показывает в диалоге ввода пароля. Задав одно такое имя для разных каталогов, можете сэкономить пользователям время по вводу лишнего пароля.

AuthGroupFile имя — задает имя файла, в котором хранятся имена групп и их членов. Его формат:
group1: member1 member2 .
group2: member3 member4 .

AuthUserFile имя — задает имя файла с паролями. По большому счету для его формирования надо воспользоваться утилитой htpasswd из поставки Apache. Но по крайней мере для некоторых версий сервера этот формат такой:
user1:passwordhash1
user2:passwordhash2

Passwordhash вполне можно получить стандартной функцией Perl»а:
$hash=crypt($pass,$salt);
где $pass — пароль, $salt — строка из двух символов, участвующая в формировании хэша.

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

require user user1 user2 и require group user1 user2 позволяют указать, какие пользователи и группы получат доступ к данному каталогу.

require valid-user разрешает доступ всем пользователям, указанным в файле паролей системы.

  • . , где methodi определяет HTTP-метод. Например,
  • ограничивает применение вложенных в неедиректив случаями использования методов GET и POST (обычно этого более чем достаточно).Вложенными могут быть директивы require, order, allow и deny.

    Еще пара полезных директив — deny и allow — соответственно запрещения и разрешения доступа.Применяются примерно так:
    deny from all
    allow from 192.168

    По умолчанию сначала выполняются все deny, потом все allow, так что allow from all разрешит доступ всем пользователям, не взирая ни на какие deny. Порядок можно изменить директивой order: order allow, deny .

    deny from all отлично сочетается со вторым способом защиты страниц через CGI, именно этой директивой лучше всего прикрывать всякие пароли к гостевым книгам и т.д. При попытке обращения к страницам из этого каталога пользователь получит сообщение о несуществующей странице.

    Кстати, тут между делом демонстрируется самостоятельная обработка ошибок: в данном случае — код 403, Forbidden. Аналогично обрабатывается и всеми любимая 404 — Not Found, и 401 — Unauthorized. Для этого достаточнодобавить в.htaccess директиву ErrorDocument код url :
    ErrorDocument 404 /cgi-bin/bad.pl
    ErrorDocument 403 /cgi-bin/badaccess.pl
    ErrorDocument 401 /cgi-bin/badaccess.pl

    Все, что делает скрипт — формирует сообщение об ошибке, используя переменную окружения REQUEST_URI, так что всместо него вполне можно просто указать какую-нибудь подходящую страницу.

    Для заключительного примера используем файл.htaccess со следующим содержимым:

    AuthType BasicAuthName TestAuthGroupFile /my/local/path/tgroupAuthUserFile /my/local/path/tuser
    require group test

    В файле tgroup всего одна строчка — test: login test , в файле tuser — зашифрованные пароли для login (password) и test (test). Обратите внимание, при повторном обращении к этой странице браузер понимает, что только что обращался к этой области, и не утруждает пользователялишним запросом пароля.

    Таков вкратце минимальный набор сведений, необходимых для защиты web-страниц. Как показывает практика, более-менее доверять стоит лишь решениям, основанным на средствах, предоставляемых сервером (и то до тех пор, пока в сервере не обнаружится очередная дырка), так что если есть возможность, лучше выбирать именно их.

    Пароли являются основным средством защиты информации и используются на компьютере повсеместно – от входа в учетную запись до авторизации на страничках в социальных сетях. У активного пользователя различных ключей безопасности набирается столько, что все их держать в памяти невозможно. Тут-то на помощь и приходит функция сохранения паролей в настройках браузера.

    Работает она следующим образом:

    1. Вы открываете какой-то сайт, где требуется регистрация.
    2. Вводите данные для авторизации в своем профиле.
    3. Браузер предлагает вам сохранить введенную информацию – вы соглашаетесь.

    При следующем запуске этого сайта вам не нужно ничего вводить; даже если вы вышли из аккаунта, все строки формы авторизации будут заполнены. Но здесь обнаруживается серьезный недостаток – давайте узнаем, как посмотреть пароль, закрытый звездочками, и можно ли вообще это сделать.

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

    Пароль, закрытый звездочками, – легкая добыча для взлома.

    Проверьте это на своем компьютере. В качестве примера используем браузер Google Chrome:

    Точно так же можно посмотреть ключи доступа к аккаунтам в других браузерах – Mozilla Firefox, Opera, Internet Explorer. Посмотрим, как это делается в Mozilla для закрепления материала:

    Кстати, менять значение обратно на «password» необязательно. Если вы закроете страницу, а затем снова зайдете на неё, то увидите, что звездочки вернулись. Однако теперь вы знаете, какие они ненадежные защитники личных данных.

    Настройки браузеров

    Если вы думаете, что на этом разоблачение звездочек окончено, то глубоко ошибаетесь. Во всех браузерах есть еще более удобный способ посмотреть пароль, который вы сохранили при первой авторизации на сайте. На этот раз для примера возьмем веб-обозреватель Opera:

    Появится окошко, в котором будет много адресов сайтов и данные от разных аккаунтов. На первый взгляд всё хорошо: логины, конечно, отображаются, но вместо паролей знакомые нам звездочки. Однако если вы нажмете на одну строку, то увидите, что рядом со звездочками появляется кнопка «Показать» .

    Одно нажатие – и вы видите ключ безопасности от сайта. Можно раскрыть все пароли, сделать скриншот и вы даже не поймете, что ваши запароленные странички теперь в опасности. Подобной информацией делится не только Opera, но и другие браузеры. В Google Chrome, например, такую табличку можно вызвать следующим способом:

    В Mozilla Firefox таблица со всеми сохраненными ключами доступа открывается в разделе настроек «Защита».

    В других браузерах ситуация похожая – в открытом доступе обязательно есть все данные, которые вы соглашаетесь сохранить.

    Использование специального софта

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

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

    Соответственно, есть специальные утилиты, позволяющие эти сохраненные данные посмотреть. Работают такие утилиты по одному принципу, поэтому возьмем в качестве примера программу Password Cracker. Распространяется она бесплатно, а весит смешные 45 Кб.

    В строке «Пароль» в окне утилиты Password Cracker появится сохраненный ключ безопасности в цифро-буквенном отображении.

    Вывод

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

    Конечно, в таком случае вы рискуете забыть пароль и не попасть в нужный профиль. Однако это не страшно: мы уже писали о том, как восстановить пароль на Gmail, как узнать пароль от Wi-Fi, как вернуть доступ к аккаунту в игре WarFace и т.д. Если вы можете зайти в почтовый ящик, на который зарегистрирован акканут, или привязали к профилю номер телефона, то при необходимости сможете легко восстановить забытый пароль.

    Но что делать с теми ключами безопасности, которые вы уже сохранили в настройках браузера? Правильный ответ – удалить. Когда вы просматривали пароли через настройки, то должны были увидеть, что функцию сохранения кодов можно отключить. Очистите таблицы с сохраненными ключами, удалив все строки, а затем деактивируйте саму функцию.

    Нет похожих статей.


    Уважаемые друзья, рад снова Вас приветствовать на своем блоге « ». Сегодня речь пойдет о том, как поставить пароль на страницу сайта WordPress, здесь все очень просто, но для чего это нужно? На эти и другие вопросы я постараюсь Вам сегодня ответить.

    Для чего ставить пароль на страницу

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

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

    Я думаю сам принцип заработка на платном доступе понятен, поставили пароль, приняли оплату, отправили пароль доступа. Если это абонентская плата, то раз в месяц меняете пароль, опять собираете оплату и отправляете новый пароль. Все это можно автоматизировать с помощью отличного сервиса e-autopay.com , данный сервис очень удобен в плане приема платежей и автоматической рассылки электронных и физических товаров, пин-кодов и так далее, все можно настроить в плоть до удобной партнерской программы, советую обратить внимание, сервисом пользуются все известные инфобизнесмены такие как, Азамат Ушанов, Александр Борисов и многие другие. Кстати, тоже реализована на сервисе e-autopay.com .

    Теперь давайте с Вами узнаем, как поставить пароль на страницу сайта WordPress. Для этого нам нужно, естественно, сначала создать нужную страницу, а затем зайти в редактирование записи и перейти к вкладке «Опубликовать» и нажать на ссылку «редактировать», смотрите рисунок.

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

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

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

    Ставим пароль на страницу

    Данная статья не претендует на какие-то откровения, все эти вещи достаточно очевидны и широко известны. Но получив за последнее время несколько вопросов об ограничении доступа к web-страницам, я решил свести ответы на них вместе.

    Итак, наша задача — установить пароль на доступ к некоторой странице. Начнем с самого примитивного способа, если можно так сказать, защиты — нескольких строчек на JavaScript»е. Код — что-то вроде

    Var pass = prompt(«Enter the Password:», «»); if (pass == null) window.location = «bad.html»; else if (pass.toLowerCase() == «password») window.location = «ok.html»; else window.location = «bad..js»> принципиально ничего не меняют.

    Уровнем повыше расположена аналогичная система, реализованная на Java.

    Ниже приведен упрощенный исходный код.

    Import java.applet.*; import java.awt.*; import java.net.*; public ; > try < getAppletContext().showDocument (new URL(s)); >catch(Exception e) < password.setText(e.toString()); >return true; > return false; > >

    Включив этот апплет в страницу, можно получить нечто такое:

    ; $localpath = «/materials/pagepsw/»; $login = «login»; $password = «password»; $l = $query->param(«login»); $p = $query->param(«password»); if(($p eq $password) && ($l eq $login)) < $address = $ok; >print $query->header(); open (FL, $docroot.$localpath.$address); while( ) < # Здесь заодно можно на лету модифицировать html-код # Зачем? Ну мало ли. :) print $_; >close (FL);

    Илон Маск рекомендует:  Функции mhash
    Понравилась статья? Поделиться с друзьями:
    Кодинг, CSS и SQL