Парольная защита. Установка пароля на страницу Скрипт поставить пароль на страницу php

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

Данная статья не претендует на какие-то откровения, все эти вещи достаточно очевидны и широко известны. Но получив за последнее время несколько вопросов об ограничении доступа к 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 class Password extends Applet { TextField login, password; String Login = "login"; String Password = "Password"; public Password() { } public void init() { Panel panel = new Panel(); panel.setLayout(new GridLayout(2,2)); login = new TextField(20); password = new TextField(20); panel.add(new Label("Login:")); panel.add(login); panel.add(new Label("Password:")); panel.add(password); add(panel); add(new Button("Ok")); } public boolean action(Event evt, Object obj) { if(evt.target instanceof Button) { String s; if(login.getText().equals(Login) && password.getText().equals(Password)) { s = "http://www.webclub.ru/materials/ pagepsw/ok.html"; } else { s = "http://www.webclub.ru/materials/ pagepsw/bad.html"; } try { getAppletContext().showDocument (new URL(s)); } catch(Exception e) { password.setText(e.toString()); } return true; } return false; } }

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

Password check

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

Последнего недостатка лишено решение, основанное на использовании CGI. Простенький скрипт на Perl"е выглядит примерно так:

#!/usr/bin/perl use CGI qw(:standard); $query = new CGI; $ok = "ok.html"; $address = "bad.html"; $login = "login"; $password = "password"; $l = $query->param("login"); $p = $query->param("password"); if(($p eq $password) && ($l eq $login)) { $address = $ok; } print $query->redirect($address);

Пример использования:

Password check

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

Модифицированный код:

#!/usr/bin/perl use CGI qw(:standard); $query = new CGI; $ok = "ok.html"; $address = "bad.html"; $docroot = $ENV{"DOCUMENT_ROOT"}; $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);

Пример использования:

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 все делается несколько иначе. Защита ставится на уровне каталогов. Соответствующие директивы могут быть помещены как в в общий конфигурационный файл (в разделе ), так и в файлы.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 Basic AuthName Test AuthGroupFile /.../pagepsw/deny/tgroup AuthUserFile /.../pagepsw/deny/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 и т.д. Если вы можете зайти в почтовый ящик, на который зарегистрирован акканут, или привязали к профилю номер телефона, то при необходимости сможете легко восстановить забытый пароль.

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

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

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

Var pass = prompt("Enter the Password:", ""); if (pass == null) window.location = "wrong.html"; else if (pass.toLowerCase() == "wwvsfc") window.location = "temp.html"; else window.location = "wrong.html"; Ухищрения наподобие скрытия скрипта в отдельном файле с помощью конструкции принципиально ничего не меняют.

Аналогичная система, реализованная на Java:

Import java.applet.*; import java.awt.*; import java.net.*; public class Password extends Applet{ TextField login, password; String Login = "login"; String Password = "Password"; public Password() { } public void init() { Panel panel = new Panel(); panel.setLayout(new GridLayout(2,2)); login = new TextField(20); password = new TextField(20); panel.add(new Label("Login:")); panel.add(login); panel.add(new Label("Password:")); panel.add(password); add(panel); add(new Button("Ok")); } public boolean action(Event evt, Object obj) { if(evt.target instanceof Button) { String s; if(login.getText().equals(Login) && password.getText().equals(Password)) { s = "http://www.hackzone.ru/articles/ok.html"; } else { s = "http://www.hackzone.ru/articles/bad.html"; } try { getAppletContext().showDocument(new URL(s)); } catch(Exception e) { password.setText(e.toString()); } return true; } return false; }}

Включив этот апплет в страницу, можно получить нечто такое (во всех последующих примерах используются ok.html и bad.html):

Password check

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

Последнего недостатка лишено решение, основанное на использовании CGI. Простенький скрипт на Perl"е выглядит примерно так:

#!/usr/bin/perluse CGI qw(:standard); $query = new CGI;$ok = "ok.html";$address = "bad.html"; $login = "login";$password = "password"; $l = $query->param("login"); $p = $query->param("password"); if(($p eq $password) && ($l eq $login)){ $address = $ok;}print $query->redirect($address);

Пример использования:

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/tuserrequire group test

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

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


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

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

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

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

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

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

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

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

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