http://experiment.h11.ru
Начало  •   Чтиво  •   Форум  •   О проекте  •   Ссылки
® 
§10. Защита информации на веб-странице
Readonly forever

Написать эту статью меня натолкнула строчка, <body oncopy="return false">, которая защищает содержимое страницы от копирования.
"Неужели все так просто" — подумал я. Но разобравшись, я понял, что защищает она только от чайников, которые не знают — что такое ViewSource, и пользуются только IE. Потом, я нашел парочку скриптов, которые запрещали правый клик мышкой, лишая чайника контекстного меню. Но есть "главное меню", и там все продублировано...
Как тут быть?

Как защитить информацию на веб-странице?
"И тут Остапа понесло..."

Что-бы Вас заинтересовать, попробуйте скопировать что либо с этой страницы → эта страница.

Поставленная задача?
  • Во-первых — защитить код. (с исходного кода всегда можно выделить нужную информацию)
  • Во-вторых — защитить объекты на странице, т.е. они должны быть видимыми, но не копируемыми.
  • В третьих — все это должно работать во всех браузерах, иначе есть риск ничего не увидеть (или увидеть абракадабру).

При всем при этом нужно предусмотреть вариант скачивания страницы через ФТП и обезопасить страницу от этого.

Что можно защищать?
  1. В стране, где слово "CopyRight" почти ничего не значит, авторскую информацию нужно защищать всеми доступными методами.
  2. Картинки, рисунки и другие графические объекты.
  3. Написанный вами скрипт, на который вы потратили три бессонных ночи, и который хотите презентовать только у себя на сайте
  4. Книги on-line...


Как это сделать?
Этап 1:
Создаем скрипт, который защитит объекты страницы (текст, графика) от копирования.

<script>

var bbb=1;

function rf(){ return false }    //эта ф-ция не дает событию исполнится

//определяем действия для Netscape
if(document.layers || (window.captureEvents && !(document.all))){
  document.captureEvents(Event.MOUSEDOWN);
  document.onmousedown=rf;
  self.blur()      //убираем фокус со страницы (делаем невозможным выделение текста)
  bbb=2;
  }

//определяем действия для Opera
else if (window.captureEvents){
  document.write("<input type=Text style='visibility:hidden;position:absolute' id=ht onblur='this.focus()'>");
  ht.focus();      //убираем фокус со страницы и даем его скрытому полю ввода
}

//определяем действия для IE
else if(document.all)
  document.onselectstart=rf;      //запрещаем выделение текста в IE

document.oncontextmenu=rf;      //отключаем контекстное меню в IE и Netscape

//проверка имени сервера страницы, открывшего данную
if(window.opener!=undefined&&window.opener.location.host==location.host&&location.host!='') bbb=0;

</script>

//запрет вывода, если имена серверов не совпадают
<script>
if(bbb==2) self.close();
if(bbb!=0) document.write("<div style='display:none'><noscript>");
</script>

!!! Именно последних пару строчек кода делают невозможным:

  1. отображать вашу страницу не на вашем сервере
  2. отображать вашу страницу с других ссылок
  3. отображать вашу страницу локально на компьютере (если она, например, была скачана через ФТП)
Особенности...

Нюанс1: страница должна иметь запрет на кеширование (а то догадливые могут найти некоторые рисунки в файлах, кешированих броузером).
Это можно сделать так:
<meta http-equiv="Cache-Control" content="no-cache">

Нюанс2: графические объекты должны отображаться как фон некоторого контейнера (тега).
Напр.: <div style="background:url(img.jpg) no-repeat; width:500; height:404;" title="Рисунок"></div>
вместо <img src="img.jpg" width="500" height="404" alt="Рисунок" border="0">

Нюанс3: для более надежной безопасности ссылка открывающая защищенную страницу должна иметь примерно вот такой вид:
<a href="#" onClick="self.open('page.html', 'testwin', 'toolbar=0,location=0,directories=0,menubar=0,status=1,scrollbars=1,resizable=1')">защищенная страница</a>

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

Основная схема шифровки выглядит так:

  • Подшиваем к коду страницы скрипт, приведенный выше (для защиты видимой информации и других объектов)
  • Шифруем все это с помощью какого-либо алгоритма (переводим в ASCII-коды или сдвигаем биты или открытым ключом...)
  • К зашифрованному коду подшиваем функцию расшифровки (тоже на JavaScript)

    Свой шифратор я сделал в таком видеШифратор.

    Функция расшифровки — самое уязвимое место. Через нее можно понять алгоритм шифрования и раскодировать шифр. Хотя для этого понадобятся хорошие знания программирования и JavaScript-спецификации.

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

    Рекомендация: не стоит таким образом защищать жизненно важную информацию, от которой зависит Ваша судьба или судьба Ваших близких.

    Недостатки:

  • не работает без JavaScript
  • при шифровании, иногда, объем файла увеличивается (с моим методом шифрации — в 3 раза!!!)
  • уязвимость перед взломом (как и все программы)

    Альтернатива: технология Flash.

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

    Создано: 1.10.2004
    Автор: Stipuha


     
     
     ? 
    А я думаю так:



    Другие мнения...

    → что-бы высвечивалось Ваше имя (как автора мнения) — зарегистрируйтесь
     
    0205 Автор: Stipuha 07.02.2005 21:10
      Я рассмотрел ваши впредложения и слегка усовершенствовал алгоритм защиты.
    Если есть еще какие-то глупые дыры -- сообщайте...
     
    0176 Автор: Неизвестный 27.12.2004 13:22
      Все выдирается на ура но идея нечего
     
    0174 Автор: Неизвестный 23.12.2004 17:16
      Это бред все, картинку можно выдрать сделав принтскрин. а можно еще проще просмотрев что броузер просит у сервера. А текст даже если ты его в имидж превратиш можно загнать всегда в файнридер и распознать через тот же принтскрин.
     
    0109 Автор: Неизвестный 29.11.2004 13:38
      Идеи конечно у всех хорошие, но все шифрования и попытка скрыть скрипт и обезопасить картинку от скачивания абсолютно не имеют смысла. При кешировании данных не нужно быть супер-хакером, хакером, продвинутым юзером или обладать еще каким-либо почетным титулом, чтобы просмотреть код страницы через любой текстовый редактор в папке Temporary Internet Files, там же находится и картинка :))
     
    0087 Автор: Stipuha 02.11.2004 19:16
      :)
     
    0085 Автор: Неизвестный 01.11.2004 20:21
      У вас всех крыша съехала на почве защиты своих сиюминутных текстовых творений текстов и элементарных скриптов.
     
    0077 Автор: Lain 26.10.2004 17:08
      День добрый. Я, в общем-то, полный ламер :), так что о методах шифрации ничего сказать не могу. Насчет тестовой странички:
    Картинка выдирается наведением мыши, затем щелчком по дискетке (IE);
    Текст — File/Save as, сохраняем как текст (там же);
    Насчет скрипта с часами — эх, знать бы что это вообще такое, может, тоже бы забрала :)
     
    0073 Автор: VanGog 15.10.2004 08:45
      Да там нет ничего сложного. Предлагаю вам сделать другой шифровщик, более сложный. Уверен, что и его можно легко будет расшифровать. К тому же зашифрованная страница, особенно если большая, может загружаться очень долго (секунд 10-15), поэтому этот вариант не подходит.
     
    0072 Автор: Stipuha 14.10.2004 19:29
      Если Вы все таки сумели расшифровать код — поздравляю, у вас хороший уровень знаний ЯваСкрипт. Можете придумать свой более сложный.
    Также можете сообщить сюда, какой-то одной строчкой из зашифрованного файла.

    Внимание: Шифровщик на эХперименте — это лишь демонстрационный пример, не претендующий на звание "лучший шифровщик" и код его не является тайной.
     
    0071 Автор: VanGog 14.10.2004 19:17
      Мое мнение: шифратор неплохой (ламеры не осилят), но обычным пользователем расшифровывается за несколько минут.
     
    0068 Автор: Неизвестный 11.10.2004 13:21
      н-даа, зашибезно...
    мне только рисунок удалось выдрать оттуда...
     
  •  
    Дата последнего обновления 20.10.2004
    Поиск по сайту:
    Web-Дизайн — Степан Иванович
    © 2003-2004

        Rambler's Top100