Защита: привязка к домену

young

Новичок
Защита: привязка к домену

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

При выполнении скрипта он вычисляет ключ к данному домену, на котором его запросили, и, если они не совпадают, генерирует просто строку вверху "Это не лицензионная копия, сходите на такой сайт..." и далье работает как и было задумано

1) Насколько это правильно с точки зрения логики
2) Насколько сложно взломать такую защиту
3) Какой алгоритм оптимален для генерации ключа
 

Yurik

/dev/null
>1) Насколько это правильно с точки зрения логики
в таких случаях почти все так делают
>2) Насколько сложно взломать такую защиту
было тут вроде соревнование, подменить $_SERVER['HTTP_HOST'] вроде не удавалось. ?

>3) Какой алгоритм оптимален для генерации ключа
а) в скриптах ставишь require_once('key.php')
б) в key.php
PHP:
if ($_SERVER['HTTP_HOST']!='pupkin.ru') die('Это не лицензионная копия');
 

f1

formula 1
Автор оригинала: Yurik

а) в скриптах ставишь require_once('key.php')
б) в key.php
PHP:
if ($_SERVER['HTTP_HOST']!='pupkin.ru') die('Это не лицензионная копия');
а что потом помешает такой key.php стереть и вместо него записать пустой файл :)
 

young

Новичок
а что потом помешает такой key.php стереть и вместо него записать пустой файл
Этот вопрос меня не интересует, так как в жизни оно у меня будет по другому

Меня интересовали те три вопроса которые я описал
 

Popoff

popoff.donetsk.ua
а что потом помешает такой key.php стереть и вместо него записать пустой файл
а как определить, что именно этот файл надо стереть и записать вместо него пустой?
 

Yurik

/dev/null
Да, я забыл сказать, вспомнил и сразу сюда, а товарищ f1 уже подметил :)
В тот файл нужно вшыть какую-нибудь переменную.
Например в коде написать
PHP:
require_once('key.php')
if ($secret_var!='some_secret_code') die('Hacking?!');
key.php
PHP:
if ($_SERVER['HTTP_HOST']!='pupkin.ru') die('Это не лицензионная копия');
$secret_var='some_secret_code';
 

clevel

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

goodwarlock

Guest
А ведь найдется злодей вроде меня и
пропишет в mod_php4.c фиксированную переменную $_SERVER['HTTP_HOST'] ;-)
 

young

Новичок
А ведь найдется злодей вроде меня и
пропишет в mod_php4.c фиксированную переменную $_SERVER['HTTP_HOST'] ;-)
В моем случае не найдется, так как я сам являюсь хостером для своих клиентов :)

хм, а зачем дополнительный файл... все равно придется для каждого домена менять дистрибутив перед продажей?
Смотири какой прикол - я продал движок Васе, и дал ему ключ. А он отдал движок Пете, со своим же ключем. Он будет работать и там и там, но вот у Пети он будет светить банер, с просьбой сходить на сайт :)

И главный вопрос открыт: как формировать секретную строку по доменному имени?!
И второй вопрос: как выцепить доменное имя, так что бы ео нельзя было подделать?!
 

Alien

Новичок
Давно ли $_SERVER доступен только на чтение? Все много проще.

auto_prepend_file => $_SERVER['SERVER_NAME'] = 'www.yandex.ru' => радостно потираем руки без правки mod_php4.c
 

young

Новичок
Если на то пошло, то можно брать через get_env
Там такой фокус не пройдет
 

Mixan

Guest
А что если делать "внеший" запрос, т.е. запрашивать определенный скрипт на данном же хосте, но через URL, например: http://www.mysite.ru/script.php.
Тут уже подделывай - не подделывай хост, а если домен изменится, то будет облом...
 

confguru

ExAdmin
Команда форума
От Анайтов защиты нет расслабтесь ,))
Просто встоимость взлома может ыть дешевле стоимости кода ,)))
 

Yurik

/dev/null
хм, а зачем дополнительный файл... все равно придется для каждого домена менять дистрибутив перед продажей?
почему это? весь дистрибутив не меняется и есть заэнкоденным раз и навсегда. Он не работает без "правильного" ключа key.php, код к ключу знает только Янг, потому как он сам зашыл
PHP:
if ($secret_var!='some_secret_code')
раз и навсегда в основной файл сайта.
И потому ключи может раздавать только Янг.
 

buddy

Новичок
2young: как ты вичисляешь код к данному домену? коннектишься к удалённой базе? (сорри за оффтоп)
 

nagash

Guest
вот человек и спрашивает - какой алгоритм шифрования использовать чтобы скрипт брал название домена - шифровал его - и получал некий код.. и проверял его с введённым...
чего не понятно то...
 

DiMA

php.spb.ru
Команда форума
md5 конечно, мало ли алгоритмов хеширования можно придумать?
 

eddie

Новичок
у меня тоже в моей системе есть привязка ключа к доменному имени. Работает через getenv для того чтобы нельзя было подменить (putenv('SERVER_NAME=bla-bla-bla') не работает, и слава богу). Но, может быть, открою страшную тайну, которую пока сам не могу побороть, mod_proxy позволяет обойти такую защиту и хоть ты тресни. Может у кого будут идеи как от этого защититься. Я пока максимум вставляю <base href=[SERVER_NAME]> -- но это также можно обойти, плюс грабли в другом вылезают.
 

netdog

net @
ну если как у young свой сервер... то кроме домена туда еще кучу всего можно всунуть... от ОС до колличества озу на сервере с винтом ;)
 

clevel

Новичок
Дима, что-то я с твоей системой ломалки мд5 не разобрался.. как там ее корректно настроить? Доку не подкинешь?
 
Сверху