В вопросе защиты контента сайта от копирования существует несколько отличных друг от друга подходов. Самым простым вариантом является использование возможностей JavaScript для блокирования функций выделения и копирования как графических, так и текстовых элементов web-страницы. Это не самый надежный, но при этом самый доступный вариант для большинства вебмастеров и серверов. Далее следует скриптовая защита — вернее, показ страницы через специальный php- или cgi-гейт, также не позволяющий производить копирование, сохранение и кэширование страниц. Однако в большинстве случаев подобные скрипты строятся на функции создания страницы на лету, а этот вариант не самый лучший с позиции защиты. Наиболее надежным принято считать перевод всех элементов страницы в шестнадцатеричный код ASCII, закодированный в ISO Latin-1. Во-первых, эта технология предполагает работу с web-страницами в режиме кодирование-декодирование, что уже говорит о том, что пользователь, сохранив закодированную страницу, может создать скрипт, который декодирует первоначальный ASCII-код и сохранит его в читаемом виде где-нибудь на диске. Во-вторых, вряд ли можно считать настолько надежными те технологии, одинаковые и неизменные принципы которых может использовать любой пользователь Сети.
В большей мере все эти подходы служат лишь для защиты от начинающих пиратов и от людей, малознакомых с подобными технологиями. Конечно, есть еще SSL, но в связи с тем, что это платный сервис, и не каждый готов за него платить, мы его рассматривать не будем.
Запрет кеширования страницы
Большинство специалистов по безопасности считают это первым шагом на пути к полноценной защите сайта от копирования. Для запрета на кэширование необходимо всего-навсего сделать на это указание в разделе <head>… </head>:
В этом случае используются функции oncontextmenu и ondragstart, позаимствованные из JavaScript (оно и не мудрено, ведь JScript принят в Internet Explorer языком по умолчанию, что не требует обязательного указания атрибутов.
Ограничение функции сохранения картинки
Заблокировать функцию клика правой кнопкой мыши и известить пользователя об этих ограничениях специальным сообщением можно внеся в тег <body>…</body> код:
<script type="text/javascript" language="Javascript1.2" > <!-- var mymessage = "Извините, но вы не можете просмотреть код страницы или скачать картинку."; if (document.layers){ document.captureEvents(Event.MOUSEDOWN); } function rtclickcheck(keyp){ if (document.layers && keyp.which != 1) { alert(mymessage); return false; } if (document.all && event.button != 1) { alert(mymessage); return false; } } document.onmousedown = rtclickcheck //--> </script>
Заблокировать выпадающее меню полностью
...вы можете указав в теге body соответствующую функцию
<body oncontextmenu="notmenu();">
а в теле документа описав ее
<SCRIPT LANGUAGE="JavaScript1.1"> function notmenu() { window.event.returnValue=false; } </SCRIPT>
Запретить копирование через Ctrl+C
В разделе <head> прописываем запреты:
<SCRIPT LANGUAGE="JavaScript"> document.ondragstart = test; //запрет на перетаскивание document.onselectstart = test; //запрет на выделение элементов страницы document.oncontextmenu = test; //запрет на выведение контекстного меню function test() { return false } </SCRIPT>
Все эти средства хороши лишь против нездоровой активности новичков, но не обеспечивают необходимой защиты сайту. Достаточно сохранить такую web-страницу на винчестере, а потом, открыв ее в блокноте, удалить указанный код, и уже потом использовать по своему усмотрению.
Защита от копирования модальными окнами
Для этого страницу надо открывать через специальную кнопку:
Страницу в таком окне нельзя ни скопировать, ни сохранить — но опять же, достаточно в блокноте или через функцию браузераВид > Просмотр HTML-кодапосмотреть код кнопки, чтобы определить адрес страницы и затем открыть ее в новом окне браузера.
Кодировка исходного кода страницы
В 1999 году был анонсированMicrosoft Script EncodingилиJScript.Encode. Суть этой технологии сводится к кодировке всей страницы в шестнадцатеричный код ASCII. В этом случае ни скопировать, ни сохранить страницу в читаемом виде нельзя, а вот просмотреть в Internet Explorer 5+ — пожалуйста. В основе этой технологии лежат все те же функции Java: для кодировки используется escape, а для перекодировки unescape. Хочу обратить ваше внимание на тот факт, что в этой технологии используется кодирование данных, а не их шифрование, т.е. символы заменяются другими символами, а не зашифровываются. Поэтому для прочтения страницы достаточно обладать инструментом, способным вернуть первоначальное значение измененного символа. Технология не использует никаких скрытых или публичных ключей, а значит, может быть реализована любым вебмастером. Реализовать этот способ шифрования можно как с помощью простенького скрипта на Java, так и с помощью php- и cgi-скриптов. Вот пример кода для шифрования страницы на JavaScript:
В зашифрованном виде страница сохраняется на сайте, а для ее прочтения используется функция, ответственная за прочтение:
document.write (unescape("3%74…%68"))
Вместо цифробуквенной абракадабры в примере используется код вашей страницы после кодировки. Для того чтобы его ввести в эту функцию, используют либо скрипты-ридеры (что-то типа reader.cgi?page.htm), «читающие» весь ворох ваших страниц по запросу, либо дополнительные функции Java. Вот для того чтобы не делать ошибок в кодировании/декодировании, не «изобретать снова велосипед», как раз и придумали в компании Microsoft специальную технологию JScript.Encode. Как видите, к обычному JScript специально добавлено определяющее слово Encode. То есть программе-интерпретатору (или браузеру) таким образом мы сообщаем, что для перекодировки используется обычный JScript, и специальных программ для прочтения страницы не потребуется. Microsoft предлагает для кодирования специальную программуscrenc.exe(127 Кб). Эта программа позволяет кодировать файлы HTML, ASP, SCT, VBScript и JScript. Кодирование страниц с помощью программы screnc происходит через командную строку, для этого достаточно указать название страницы, которую вы хотите закодировать, и название, которое будет иметь страница после кодировки:
screnc mypage.htm codemypage.htm
Кодироваться могут только страницы, имеющие атрибуты Jscript, или специально подготовленные для этой операции с помощью тэгов:
Существуют определенные требования к браузерам и операционным системам, с которыми работает Script Encoder от Microsoft. Так, в последнем релизе (февраль 2003 года) указывается, что программа работает с операционными системами Windows 2000, Windows 98, Windows ME, Windows NT, Windows XP, а также с браузерами Internet Explorer 5 и выше серий. Возможно, из-за этой специфики Script Encoder и не получил большого распространения. Среди возможных альтернатив на рынке специализированных программ-кодировщиков можно назвать программуHTML Guardian(2) — http://www.protware.com/dl/HTMLGuardian.exe, 6.26 Мб — компании ProtWare. Программа позволяет кодировать файлы форматов .htm, .html, .shtm, .shtml, .stn, .asp, .js, .vbs, .css, .php, .inc, а также графические .jpf, .gif (не анимированный) и .bmp. Помимо этого, программа позволяет кодировать отдельные фрагменты (например, реферальные ссылки, адреса e-mail) или скрипты html-страницы, а также закрывать доступ к коду страницы с помощью 384-битного ключа. Главное отличие HTML Guardian от Script Encoder состоит в том, что программа предлагает пользователю при кодировании файла выбрать опции кодирования, включающие в себя и ограничения на некоторые функции браузера (например, запрет на клик правой кнопкой мыши или на использование файла в оффлайне). В отличие от Script Encoder, HTML Guardian имеет возможность кодировки страницы и для альтернативных браузеров, также работает с IE версии 5 и выше. В отношении последнего ProtWare гарантирует максимальную безопасность.