«— Сколько раз я видел своими глазами, как верблюд не может пройти сквозь игольное ушко?
— Сколько раз я видел, как богач не может войти в Царствие Божие?
— Если Богу угодно, чтобы никто не был богат, зачем Он создал так много денег?»

Кристофер Бакли. «Господь — мой Брокер»

Шторкин.руМоя работа → Технодром

Технодром!Защита кода внешних скриптов JavaScript и стилей CSS от копирования  (6 января 2009 г. )

Ради спортивного интереса озадачился проблемой защиты от воровства JavaScript и CSS. Не редко люди (веб-мастера), увидев какую-либо фишку на том или ином сайте, лезут в сорсы посмотреть, как это сделано. В большинстве случаев код JavaScript и CSS хранится во внешних файлов, которые подгружаются браузером по ссылкам, и легко по ним доступны (достаточно залезть в исходник HTML, и сделать копи-паст, скажем, ссылки на CSS в адресную строку, подставив имя домена, если путь относительный). После недолгих раздумий, в голову пришла простейшая защита от этого воровства:



Этот код необходимо поместить в начало внешнего файла, требующего защиты:
<?php
if(!isset($_SERVER["HTTP_REFERER"])) 
 {
  echo("не дам! :-)");
  exit();
 }
?>




А этот — в файл .htaccess:
AddType application/x-httpd-php .js .css


Принцип действия предельно прост. Фрагмент PHP-кода анализирует состояние переменной окружения HTTP_REFERER, которая указывает на источник, с которого поступил запрос на файл. Если файл запрашивается браузером, то она примет значение URL страницы, с которой поступил запрос (на CSS или JavaScript — разницы нет), а если исходный код пытается получить человек, вставив адрес файла в адресную строку, то она не будет определена. Тут-то мы и ловим воришку, подсовывая ему вместо вожделенного кода все что захотим. Варианты: как здесь — сообщение, но это слишком просто, да и вызовет у настойчивого нарушителя непреодолимое желание получить код. Вариант второй: подсунуть ему нечто, напоминающее внешне истинный код, но предварительно внеся в него изменения, которые, например, скроют уникальные фичи или приемы CSS, человек долго будет ломать голову, как же это у вас работает, и вряд ли догадается что просматривает липовый код.

Второй фрагмент кода нужен для того, чтобы в файлах с расширениями .css и .js правильно интерпретировались PHP-тэги.

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

Красная пилюля




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

06.01.2009 в 20:46  Семен Шторкин
Забыл напомнить, что в конце PHP-кода необходимо поместить указание заголовка, чтобы браузер понял, что передается ему именно text/css, а не что-то еще... Код: header("Content-type: text/css; charset: windows-1251");
08.01.2009 в 3:01  Семен Шторкин
Безумная идея переросла во что-то большее: http://shtorkin.ru/csrp Теперь в начало защищаемых файлов никакой код не помещается, а страшные бинды расширений .js и .css с PHP не производятся.
Уважаемые посетители, сайт частично находится на реконструкции.

 

Блог 28

 

Про фотографию 21

 

Про кино 3

 

Поток сознания — twitter.com/shtorkin

Facebook — facebook.com/shtorkin

ВКонтакте — vk.com/shtorkin

Шторкин по Яндексу — «Нашлось 124 тыс. страниц»

Шторкин по Вараксину — «Шторкин сгонял за водкой, нарезал хлеб и открыл банку консервов»

 

К Пелевину никакого отношения не имею, и не читаю подобное... Псевдоним «Шторкин» возник за долго до выхода книги с одноименным героем, мотив — шторки фотоаппарата (хотел сначала взять псевдоним Затворкин, но оказалось, что фотограф с таким псевдонимом уже существует)

И еще. Друзья, помните, Don't feed The Troll ;-)



  © 2007 – 2011 Семен Шторкин (Семен Орлов)
Для связи:
Если срочно: (придет на коммуникатор)

Все права на представленные на сайте материалы принадлежат их авторам. Копирование материалов допускается лишь с согласия автора.

Всякое распространение материалов данного сайта без согласия автора преследуется по закону.

Ваше настроение в ваших руках - сумки женские оптом. Champion по низкой цене. . ммм-2011 . Караоке система KARAOKEPRO: караоке.