Написать эту статью меня натолкнула строчка, <body oncopy="return false"> , которая защищает содержимое страницы от копирования.
"Неужели все так просто" — подумал я. Но разобравшись, я понял, что защищает она только от чайников, которые не знают — что такое ViewSource, и пользуются только IE. Потом, я нашел парочку скриптов, которые запрещали правый клик мышкой, лишая чайника контекстного меню. Но есть "главное меню", и там все продублировано...
Как тут быть?
Как защитить информацию на веб-странице?
"И тут Остапа понесло..."
Что-бы Вас заинтересовать, попробуйте скопировать что либо с этой страницы > эта страница . Поставленная задача?
Во-первых — защитить код. (с исходного кода всегда можно выделить нужную информацию)
Во-вторых — защитить объекты на странице, т.е. они должны быть видимыми, но не копируемыми.
В третьих — все это должно работать во всех браузерах, иначе есть риск ничего не увидеть (или увидеть абракадабру).
При всем при этом нужно предусмотреть вариант скачивания страницы через ФТП и обезопасить страницу от этого. Что можно защищать?
В стране, где слово "CopyRight" почти ничего не значит, авторскую информацию нужно защищать всеми доступными методами.
Картинки, рисунки и другие графические объекты.
Написанный вами скрипт , на который вы потратили три бессонных ночи, и который хотите презентовать только у себя на сайте
Книги 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: страница должна иметь запрет на кеширование (а то догадливые могут найти некоторые рисунки в файлах, кешированих броузером).
Это можно сделать так:
<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