Понедельник, 21.09.2026, 08:56
Приветствую Вас Гость | RSS
Главная | Статьи | Регистрация | Вход
Меню сайта
Категории каталога
Серверные технологии [6]
Скрипты [6]
Web дизайн [5]
SEO [8]
Наш опрос
У Вас есть свой сайт?
Всего ответов: 25
Форма входа
Счетчик материалов
Форум: 22/53
Галерея: 451
Файлы: 52
Статей: 29
Поиск
Друзья сайта
Статистика

Онлайн всего: 10
Гостей: 10
Пользователей: 0
Главная » Статьи » Web технологии » Скрипты

Защита информации сайта от копирования


Пока компьютерные издания рапортуют об увеличении числа сайтов, авторы
многих из них вздрагивают; одни — опасаясь разоблачения, другие же
боятся того, что плоды их труда попросту могут украсть. Думаю, каждый
из читателей хотя бы раз слышал или читал историю о том, как
новоявленные дизайнеры без зазрения совести, невзирая на знаки
копирайта, просто крали графику, элементы сайта или полностью дизайн
сайта у популярных конкурентов. Время от времени Сеть вздрагивает от
подобных историй, произошедших не только с нашими малозаметными
сайтами, но и с довольно известными международными порталами (кстати, в
США, кража дизайна сайта приравнивается к краже частной собственности).
С введением закона об электронной цифровой подписи защита контента
становится куда более актуальной, так как фактически от этого зависит
сохранность соглашений и документов, выложенных для публичного
ознакомления на сайте. Ну что ж, как говорится, спасение утопающих —
дело рук самих утопающих; давайте же попробуем в меру своих сил и
умений хоть как-то защитить свой сайт от дизайнеров «с большой дороги».


В вопросе защиты контента сайта от копирования существует несколько
отличных друг от друга подходов. Самым простым вариантом является
использование возможностей JavaScript для блокирования функций
выделения и копирования как графических, так и текстовых элементов
web-страницы. Это не самый надежный, но при этом самый доступный
вариант для большинства вебмастеров и серверов. Далее следует
скриптовая защита — вернее, показ страницы через специальный php- или
cgi-гейт, также не позволяющий производить копирование, сохранение и
кэширование страниц. Однако в большинстве случаев подобные скрипты
строятся на функции создания страницы на лету, а этот вариант не самый
лучший с позиции защиты. Ну и наиболее «надежным» принято считать
перевод всех элементов страницы в шестнадцатеричный код ASCII,
закодированный в ISO Latin-1. Слово «надежным» я специально взял в
кавычки, и на то есть две причины. Во-первых, эта технология
предполагает работу с web-страницами в режиме
кодирование-декодирование, что уже говорит о том, что пользователь,
сохранив закодированную страницу, может создать скрипт, который
декодирует первоначальный ASCII-код и сохранит его в читаемом виде
где-нибудь на диске. Во-вторых, вряд ли можно считать настолько
надежными те технологии, одинаковые и неизменные принципы которых может
использовать любой пользователь Сети. В большей мере все эти подходы
служат лишь для защиты от начинающих пиратов и от людей, малознакомых с
подобными технологиями. Конечно, есть еще SSL, но в связи с тем, что
это платный сервис, и не каждый готов за него платить, мы его
рассматривать не будем.


Начнем с самого простого — с
запрета на кэширование страницы.
Хоть это может показаться ненужным шагом для защиты, большинство
специалистов по безопасности считают это первым шагом на пути к
полноценной защите сайта от копирования. Для запрета на кэширование
необходимо всего-навсего сделать на это указание в разделе
<head>… </head>:


<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
или:
<META HTTP-EQUIV="no-cache">
или:
<META HTTP-EQUIV=Cache-Control content=no-cache>

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



<span oncontextmenu="return false;" ondragstart="return false";><img src="picture.jpg" galleryimg="no"></span>

В этом случае используются
функции oncontextmenu и ondragstart, позаимствованные из JavaScript
(оно и не мудрено, ведь JScript принят в Internet Explorer языком по
умолчанию, что не требует обязательного указания атрибутов
<script>). Скрипты от Java широко используется и для других
функций защиты web-страниц, например для блокировки некоторых функций.
Так, вы можете заблокировать функцию клика правой кнопкой мыши и
известить пользователя об этих ограничениях специальным сообщением. Чтобы реализовать эту функцию, вам необходимо
внести такой код в тело страницы, т.е. между тэгами
<body>…</body> (текст выпадающего сообщения, конечно, вы
можете изменить на свой вкус):


<script 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-страницу на
винчестере, а потом, открыв ее в блокноте, удалить указанный код, и уже
потом использовать по своему усмотрению.


Существует как минимум еще один вариант защиты с использованием
модальных окон. Для этого, правда, страницу надо открывать через специальную кнопку:


<BUTTON onclick='window.showModalDialog("page.html")'>Показать</BUTTON>


Страницу в таком окне нельзя ни скопировать, ни сохранить — но опять же, достаточно в блокноте или через функцию браузера
Вид > Просмотр HTML-кода посмотреть код кнопки, чтобы определить адрес страницы и затем открыть ее в новом окне браузера.


Совсем по другому пути пошла
Microsoft, которая еще в 1999 году анонсировала
Microsoft Script Encoding или
JScript.Encode.
Суть этой технологии сводится к кодировке всей страницы в
шестнадцатеричный код ASCII. В этом случае ни скопировать, ни сохранить
страницу в читаемом виде нельзя, а вот просмотреть в Internet
Explorer 5+ — пожалуйста. В основе этой технологии лежат все те же
функции Java: для кодировки используется escape, а для перекодировки
unescape. Хочу обратить ваше внимание на тот факт, что в этой
технологии используется кодирование данных, а не их шифрование, т.е.
символы заменяются другими символами, а не зашифровываются. Поэтому для
прочтения страницы достаточно обладать инструментом, способным вернуть
первоначальное значение измененного символа. Технология не использует
никаких скрытых или публичных ключей, а значит, может быть реализована
любым вебмастером. Реализовать этот способ шифрования можно как с
помощью простенького скрипта на Java, так и с помощью php- и
cgi-скриптов. Вот пример кода для шифрования страницы на JavaScript:


<SCRIPT Language = "JavaScript">
mystring = "Вставьте текст"
document.write (escape(mystring));
</SCRIPT>


А вот что отобразит браузер:


%u0412%u0441%u0442%u0430%u0432%u044C%u0442%u0435%20%u0442%u0435%u043A%u0441%u0442.

Как видите, совсем не похоже
на начальный текст. В таком зашифрованном виде страница сохраняется на
сайте, а для ее прочтения используется функция, ответственная за
прочтение:


document.write (unescape("3%74…%68"))

Вместо цифробуквенной
абракадабры в этом примере используется код вашей страницы после
кодировки. Для того чтобы его ввести в эту функцию, используют либо
скрипты-ридеры (что-то типа reader.cgi?page.htm), «читающие» весь ворох
ваших страниц по запросу, либо дополнительные функции Java. Вот для
того чтобы не делать ошибок в кодировании/декодировании, не «изобретать
снова велосипед», как раз и придумали в компании Microsoft специальную
технологию JScript.Encode. Как видите, к обычному JScript специально
добавлено определяющее слово Encode. То есть программе-интерпретатору
(или браузеру) таким образом мы сообщаем, что для перекодировки
используется обычный JScript, и специальных программ для прочтения
страницы не потребуется.


Microsoft предлагает для кодирования специальную программу
screnc.exe (
http://download.microsoft.com/download/
0/0/7/0073477f-bbf9-4510-86f9-ba51282531e3/sce10en.exe
,
127 Кб). Эта программа позволяет кодировать файлы HTML, ASP, SCT,
VBScript и JScript. Кодирование страниц с помощью программы screnc
происходит через командную строку, для этого достаточно указать
название страницы, которую вы хотите закодировать, и название, которое
будет иметь страница после кодировки:


screnc mypage.htm codemypage.htm


Правда, кодироваться могут
только страницы, имеющие атрибуты Jscript, или специально
подготовленные для этой операции с помощью тэгов:


<SCRIPT language="JScript">
<!--//
//**Start Encode**
//А здесь html-код страницы
//-->
</SCRIPT>


Преобразование полученного кода в нормального вида страницу происходит так же непринужденно:


<HTML><HEAD>
<SCRIPT language="JScript.Encode">
//**Start Encode**3%74%72%69%6E%67%2E%66%72%6F%6D%43%68
</SCRIPT>
 </HEAD>
<BODY onload="getAppropriatePage()">
</BODY>
</HTML>

Существуют определенные
требования к браузерам и операционным системам, с которыми работает
Script Encoder от Microsoft. Так, в последнем релизе (февраль
2003 года) указывается, что программа работает с операционными
системами Windows 2000, Windows 98, Windows ME, Windows NT, Windows XP,
а также с браузерами Internet Explorer 5 и выше серий. Возможно, из-за
этой специфики Script Encoder и не получил большого распространения.


Среди возможных альтернатив на рынке специализированных программ-кодировщиков можно назвать программу
HTML Guardian
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 гарантирует максимальную безопасность.


Как видите, уважаемый
читатель, при всем разнообразии подходов, даже минимальную защиту
web-страниц могут обеспечить не все из них. Однако даже те инструменты,
какие сегодня представлены на рынке, хоть частично, но все же могут
сохранить ваши сайты от взлома и копирования.
Категория: Скрипты | Добавил: Крестный  отец (01.02.2009) | Автор: Вячеслав БЕЛОВ
Просмотров: 2094 | Комментарии: 4 | Рейтинг: 4.3/3 |
Всего комментариев: 2
19.02.2009
1. Алексей (Marikont) [Материал]
Хех, краткость сестра таланта smile

Спасибо!

P.S. что то глаза устают от вашего сайта, не пойму из-за чего именно cry


26.02.2009
Незачто))

З.Ы. бывает cool


Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Хостинг от uCozCopyright script.ucoz.de © 2026