Ради спортивного интереса озадачился проблемой защиты от воровства 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 не производятся.
|
Уважаемые посетители, сайт частично находится на реконструкции.
Блог 20
Не подумайте, что я воспеваю былой коммунистический лозунг, но смущает, что последнее время, продиктованное ростом безработицы, неумолимо растет и количество неблагополучных семей. Дети там «воспитываются» в условиях непрекращающегося пьяного дебоша, 40-летние безработные детины отбирают у престарелых матерей пенсию «на пропой», а вчерашние младшие научные сотрудники НИИ копаются в мусорных баках и выдирают из железнодорожных путей костыли для сдачи на металлолом. Подавляющее большинство этих людей объединяет одно — хронический алкоголизм. Ради денег на очередную бутылку- люди готовы рыться в мусоре, попрошайничать, воровать, грабить и совершать другие преступные деяния.
7 августа 2010 г. 4 августа 2010 г.Водители-садисты ИП Хитрова 31 июля 2010 г.Жара, «Водоканал» и урожай 30 июля 2010 г.Гламурные подонки 28 августа 2009 г.Тихий ужас. Артисты ТЮЗа объявили бессрочную голодовку 8 августа 2009 г.Российские спецслужбы заказали хакерскую атаку на FaceBook?
все записи →
Про фотографию 20 (+1)
Ло не любила цифру. После того, как ей подарили пленочный Никон, она сделала все, чтобы ей подарили фотоувеличитель, глянцеватель и всевозможные ванночки, баночки и скляночки. «Добродетель наказуема», — подумал неизвестный нам добродетель и, поцеловав Ло в лоб, скрылся из ее комнаты, обращенной в фотолабораторию. Чтобы не отвлекать от работы операторов минилабов своими этюдами, Ло весь процесс светописи сосредоточила в уютной спальной, чему была безмерно рада — выходить на улицу лишний раз не было никакого резона.
5 сентября 2010 г. 9 августа 2010 г.Итоги международного фотосалона «Berega 2010» 10 июля 2009 г.5-й съезд Союза фотохудожников России 9 июля 2009 г.Пополнения в фото-галерее
все записи →
Про кино 3
Морена Баккарин (Morena Baccarin) является бразильской и американской актрисой, наиболее известной своими ролями в американских научно-фантастических сериалах. Она сыграла Инару Серру, «компаньонку» (особу, сопровождающую высокопоставленных персон на публичных мероприятиях, ну, и оказывающую кое-какие другие услуги), путешествующую на корабле вместе с главными героями, в научно-фантастическом телесериале «Светлячок». А также Адрию, антагонистку, наполовину человека, наполовину «богиню», из другой галактики в сериале «Звездные врата SG-1».
7 августа 2010 г. 6 февраля 2008 г.Рататуй. Настоящая история 26 ноября 2007 г."Двенадцать" Никиты Михалкова
все заметки →
Если ты фотограф бойкий — приходи на «Фото Горький»!
На «Фото Горьком» значительно облагородился раздел «Свадебная фотография в Нижнем Новгороде».
И еще! Помните, друзья, Don't feed The Troll! |