Як поставити пароль на html сторінку Ставимо пароль на сторінку. Використання спеціального софту

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

Навіщо ставити пароль на сторінку

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

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

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

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

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

Після всіх вищевикладених дій Вам залишається тільки опублікувати сторінку в потрібний час. Ось таким простим чином можна робити сторінки з паролем на своєму блозі і тим самим платний або обмежений доступ до різної інформації. Наприклад, на моєму блозі обмежений доступ до безкоштовного курсу, доступ можна отримати тільки після підписки на даний курс, після активації підписки, на пошту надходить пароль доступу, все дуже просто і все в автоматичному режимі. Як бачите, в цьому немає нічого складного, можете ставити паролі на будь-які сторінки та статті свого сайту.

Тепер Ви знаєте, як поставити пароль на сторінку або статтю сайту. Сподіваюся дана інформація принесе Вам користь та нові ідеї щодо заробітку на своєму сайті. Як завжди чекаю на Ваші запитання та коментарі до цієї статті.

Я вирішив описати способи закрити паролем частину сайту. Тема насправді велика, тому на перший раз обмежуся авторизацією 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 ми маємо всю інформацію про нього.

Звичайно ж, приклад, який я навів, має низку істотних недоліків. Не переписуйте його один-на-один, щоб потім не стати жертвою спроб підбору пароля, тому що
1. захисту від підбору тут немає
2. якщо таблиця користувачів велика, при підборі пароля зловмисник, швидше за все, "завалить" базу

І останній на сьогодні спосіб – зберігання зашифрованих даних у куках.

Є скрипт для входу, решта підключає код, що дозволяє лише продовжити дії в закритій області - якщо куки спливуть, або він вийде звідти, доведеться повертатися на сторінку для входу.

Вхідний скрипт перевіряє логін та пароль та видає дві куки. У першій - логін, щоб одразу впізнати користувача (у базі поле логіна, природно, унікальне чи навіть ключове). У другому куке - хеш від часу входу та пароля (для повноти конспірації я додаю до цих рядків букву "И" - тоді хеш підібрати майже неможливо:).

Всі інші програми включають код, який робить наступне. Робить запит до бази - вибирає рядок з отриманим логіном. З цього рядка бере поле "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 date_format(log_date,"%Y%m%d%H%i%s") як 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"]). user SET log_date="$log_time2" WHERE uid=".$current_user["uid"]); setcookie($cookie_code, md5($current_user["pass"].$log_time1.$md5letter), time()+900, $site_path);$auth = true;) else unset($current_user);););

Знову ж таки, тут немає ніякого захисту від підбору та атаки на сервер (до речі, тут можна замість літери "И" писати IP-адресу користувача - щоб, наприклад, сусідові по офісу не можна було взяти файл з кукою і зайти зі свого комп'ютера).

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

Коли я виклав цей випуск минулого разу, мене запинали на місці, мовляв, таким блокуванням можна і сервер "пустити під укіс".

Але спочатку про блокування підбору. Банальності, але таки. Пароль довжиною десять символів з літер латиниці та цифр – це дуже багато варіантів. Якщо підбирати пароль по 1000000 варіантів в секунду, знадобиться кілька тисяч років. Але оскільки таку абракадабру запам'ятати складно, ми частіше робимо пароль із осмислених слів. Декілька років тому виявилося, що більшість паролів можна підібрати за допомогою словника з 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))< time()-3600) unlink($fn); else $errors = fread(fopen($fn, "r"), 2); }; 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"); 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