Объявление. Купить нельзя.

Скрипт ограничения доступа к странице

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

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

Суть проблемы

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

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

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

Решение: ограничиваем доступ с помощью кук

Решение довольно банальное. С помощью GET параметра в ссылке ставим подписчику куку, которая подтверждает наличие доступа. А затем на секретной странице проверяем наличие этой куки. Если всё в порядке, выводим страницу. Если же куки нет, то отправляем пользователя на главную страницу сайта.

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

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

Ссылку я предлагаю отсылать подписчикам в таком виде: http://site.com/secret-page.php?access=true. То есть, добавляем параметр access со значением true.

А код в самом начале секретной страницы должен быть таким:

<?php

$site_url = 'http://neverlex.com/examples/access_restriction/'; // URL главной страницы
$secret_page = 'http://neverlex.com/examples/access_restriction/secret-page.php'; // URL секретной страницы
$time = 365 * 24 * 60 * 60; // Время действия куки в секундах. По умолчанию, год

// Ставим куку, если есть параметр «access» и обновляем страницу
if ($_GET['access'] == 'true')
{
    setcookie('access', 'true', time() + $time);
    header('Location: ' . $secret_page);
}
// Иначе проверяем куку
else
{
    // Если куки нет или она не правильна, то отсылаем пользователя на главную
    if (empty($_COOKIE['access']) || $_COOKIE['access'] != 'true')
        header('Location: ' . $site_url);
}

?>

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

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

Демо работы скрипта

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

Улучшение безопасности

Конечно, с помощью данного скрипта мы повышаем безопасность материала, однако все понимают, что это защита от дурака. Эффективно защитить контент не так-то просто. Рассмотрим пару вариантов.

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

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

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

P.S.

Этот пост после написания сгинул в браузере по причине моей невнимательности. Поэтому пришлось писать его заново. Ужасное чувство, поверьте мне. Следите внимательно за своими материалами во время написания.

Получить в подарок мини-книги и 21-дневный тренинг по личностному росту.

Подписаться на рассылку «Инструменты Интернет для онлайн бизнеса»

Подписаться на обновления блога:

Поделиться ссылкой:


Комментарии:

28.10.2010 14:35:39

Про браузер - «жистока»))) Але і я так не раз попадався, бо зовсім неуважний. А про скрипт - буду пробувати)))

28.10.2010 16:59:58

Прикольно, а я как раз на днях собираюсь выпустить свой скрипт для отдачи файлов за SMS, на основе API AvisoSMS и своего нового класса :) Похожая задача.

Но в твоём варианте вообще не вижу особого смысла - даже домохозяйки умеют делать copy/paste, что и сделают с URL, чтобы выложить в блог или на форум. С другой стороны, задача вообще на 100%, похоже, не решается, не отпечатки же пальцев проверять :)

28.10.2010 17:02:20

Насчёт повторного написания - очень сочувствую и понимаю. Прям так неприятно, когда такое случается! У меня многое не написано, потому что переписывать было лень.

Правда, недавно меня «Файрфоксик» очень порадовал. Довольно много уже написал, и не сохранялся... и тут случайно как-то нажал закрытие браузера. Так обидно, блин! Запускаю снова, весь расстроенный... а там бац, и вкладочка с набранным текстом. Вот это облегчение! ))

28.10.2010 17:06:57

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

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

На счёт FF прикольно! Сохранять в кэш содержание формы не каждый додумается.

28.10.2010 20:55:29

Извините, я может и не совсем по теме, но слово «киберсант» просто рвет в клочья. А называть все это бизнесом вообще супер.
А скрипт, наверное, хороший и полезный, но мне не нужен.

29.10.2010 07:30:23

Хорошая вещь, для секретной страницы пойдёт, если там банковские коды не прятать.

29.10.2010 07:40:55

Спасибо за код! Реально нужная вещь, однозначно стоит попробовать.

29.10.2010 10:24:00

Если честно даже мысли не было прятать таким образом=)
Теперь думаю попробывать что ли=)
Хотя надо ли?..

29.10.2010 23:16:33

@Never Lex: «домохозяки» - широкий класс пользователей :) Был у меня небольшой тестик для твиттерян, где для пользователей без кук ключ хранился в адресе - несмотря на наличие ссылки «поделись с друзьями» люди постили ссылки с этой абракадаброй.

По поводу решения через куки - к примеру, есть «самые устойчивые куки», можно заюзать их

29.10.2010 23:17:55

//Ну вот и клевое совпадение - если бы не старые привычки, потерял бы коммент - твой парсер съел текст на хттп перед хабром, поэтому вырезаю.

...habrahabr.ru/blogs/webdev/104725/

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

Ну и по поводу пропадающих текстов с формы - ФФ с 3.5 как раз ввел кеш форм (но только в случае падения, при невыставленном expire «назад» не даст ничего), а достаточно давно существует плагин Lazarus для фф https://addons.mozilla.org/en-US/firefox/addon/6984/ и хрома https://chrome.google.com/extensions/detail/loljledaigphbcpfhfmgopdkppkifgno - но это не спасает меня от многолетней привычки контрол+а-контрол+в. Даже с ВП и Я.Почтой, где идет автосохранение (кстати, мог бы и у себя в самописном движке реализовать - всего чуть-чуть аякса).

Еще видел забавное решение - в случае ошибок и возврата назад при отправке комментов формы иногда все-таки сбиваются, несмотря на выставленный expire-cache, поэтому текст комментария дублировали на странице ошибки. И менее интересная плюшка в каком-то плагине капчи к ВП, при неправильной капче показывающем страничку с «второй попыткой».

30.10.2010 20:07:18
#11 senya

Вот у меня привычка очищать кеш и куку. И что тогда???

30.10.2010 21:44:27
#12 анонимус

Уместный вопрос про куку. У нас на работе чистят каждую пятницу )

31.10.2010 00:04:05

senya, анонимус, придётся ходить по ссылкам сразу из письма.

Сергей М., действительно, я вначале подумал о куках на 1 сессию (до закрытия браузера). Но «киберсантам» оно наверно не нужно :)

31.10.2010 01:20:28
#14 SergK

А ‹Скрытная Нана› (от Ласто) чего не подходит?
Файлы и информацию закрывает хорошо от ненужных пользователей-серферов.
С выдачей инвайтов нужно немного повозится, и свести выдачу к автомату. Поиграться с php и сделать пародию «аля вымогатель почты» (для подписки на рассылку с выдачей инвайта на доступ). Придумать можно кучу вариаций.

31.10.2010 11:23:51

SergK, она подходит, НО народ будет отпугивать заморочка со вводом пароля и получением доступа.

03.11.2010 17:13:49
#16 Про дотер

senya,
Полагаю тут всё банально - введёте заново, и кука создастся снова! =)

04.11.2010 00:16:06
#17 Гамлет

«Куку я предлагаю ставить на год.»
ты в своём уме? или мечтатель?
в течении ГОДА :
1- сидеть под одной системой
2- под одним браузером
3- Год не чистить куки (ну эт ваще вопиющее нарушение техники безопасности)
гы-гы-гы.....

04.11.2010 09:31:01

Простым пользователям не понравится геморой с вводом пароля

08.11.2010 10:02:58
#19 simex

Хах, защита через куки ничего не даст для 60% пользователей.......очистил куки и все....

11.11.2010 18:51:18
#20 Яковлевна

Так вот для чего нужны были куки. Давно хотела это узнать :) Идея конечно хороша (это я по-дилетантские рассуждаю), но ведь всё это тоже можно как-то обойти)

01.12.2010 14:40:06
#21 Satan

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

19.12.2010 14:16:34
#22 heliax

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

29.12.2010 18:33:56

Ребя не знал куда написать, но как не в этом разделе программирования!
Кто нибудь знает как сделать - referer на wordpress? Не просто редирект а нужно наоборот скрыть от куда пользователь идет. Т.е. Идет пользователь с сайта эруди.ru - а если проанализировать путь посетителя то покажет что он пришел с другого сайта например с яндекса.
Люди добрые кто знает как это сделать откликнитеть- поисковики ничего не выдают а сделать надо.

12.01.2011 11:36:08

Спасибо огромное. Забрал себе. Посмотрю на практике ее работоспособность. Покрайней мере есть основа - доработать можно под себя

30.01.2011 15:15:25

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

30.01.2011 15:22:14

Константин, не все скопируют саму ссылку :) многие будут копировать её текстовую наполняющую :) Это так сказать «защита от дурака» :)

Например, пишете ссылку <a href="site.ru/secret-page.php?access=true">site.ru/secret-page.php</a> и множество баранов не смогут распространить правильную ссылку :)

Я не говорю, что это самый правильный способ. Это только один из способов.

30.01.2011 16:16:19

Согласен, что в качестве бесплатного данный способ подойдет, тем более если контент распространяется за e-mail адреса

12.03.2011 11:19:15
#28 ElenaM

Большое спасибо. Попробую на своем блоге. Надо на практике оценить работоспособность и реакцию пользователей. А там уж видно будет.

10.05.2011 04:00:13

Вот ищешь то, что нужно, а находишь что-то совершенно другое. Читаю и понимаю, что это тоже надо попробовать :) Спасибо за идею и ее реализацию!

21.05.2011 13:23:22

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

13.09.2011 06:37:25

Благодарю за паблик скрипта, почти то, что искал, везде подобные скрипты платны...

Оставьте комментарий [форматирование]

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



Мой RSS фид