Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Защита сайта. Про $_SERVER['HTTP_HOST']

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Без описания
gheka
Отправлено: 15 Октября, 2013 - 16:41:44
Post Id



Частый гость


Покинул форум
Сообщений всего: 191
Дата рег-ции: Февр. 2011  


Помог: 2 раз(а)




Здравствуйте как можно не допустить или проверить что переменные $_SERVER['HTTP_HOST'] и $_SERVER['SERVER_NAME'] не изменены пользователем а значения получены именно от сервера.

То есть им не присвоены значения в ручную например.
$_SERVER['HTTP_HOST'] = 'php.su';

Это нужно для защиты скрипта по лицензии.

Или же есть более надёжные способы получения адреса сайта на который установлен скрипт.
 
 Top
LIME
Отправлено: 15 Октября, 2013 - 16:53:30
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




если изменить $_SERVER['HTTP_HOST'] то ты просто не получишь этот запрос
именно по этому заголовку сервер определяет какому хосту(из многих на данном ip) отдать запрос
то же относится к $_SERVER['SERVER_NAME']
он просто определяется по хосту
(Добавление)
если же имеется ввиду изменение в php скрипте то это никак
 
 Top
EuGen Администратор
Отправлено: 15 Октября, 2013 - 17:01:08
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




LIME
Насколько я понял, имеется ввиду изменение вручную до проверки где-либо внутри кода (иначе в чём смысл обращаться к $_SERVER текущего сервера). То есть
PHP:
скопировать код в буфер обмена
  1. $serverName = $_SERVER['SERVER_NAME'];
  2. $_SERVER['SERVER_NAME'] = 'foo';
  3. //do licence check stuff
  4. $_SERVER['SERVER_NAME'] = $serverName;


gheka
На всё, что находится на стороне, где установлен скрипт - нельзя полагаться. Если код может быть модифицирован, можно считать, что он неподконтролен. Вероятно, может иметь смысл отправки запроса на некоторый сервер авторизации, на котором будет проверяться лицензионный ключ (возможно, с привязкой к IP-адресу), но здравомыслящий заказчик на такое не пойдёт, поскольку никто не захочет зависеть от доступности Вашего сервера и/или от задержек сети при пересылке/проверке лицензии. И, опять же, это не имеет смысла делать, если код может быть модифицирован.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
esterio
Отправлено: 15 Октября, 2013 - 17:04:04
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




Также проверка на другой стороне может быть подделана с помощю тех самых хостов на localhost, что также не дает 100% уверености
 
 Top
LIME
Отправлено: 15 Октября, 2013 - 17:05:34
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




esterio а какой смысл это делать?
тогда придется подделывать ключ
тогда надо искать где он вычисляется
а найдя тогда проще это тупо вырезать
 
 Top
esterio
Отправлено: 15 Октября, 2013 - 17:09:14
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




Ну припустим банальная проверка cURL-ом на IP с соответсвенным результатом типа

Подделать легко
 
 Top
Squirrel
Отправлено: 15 Октября, 2013 - 17:11:11
Post Id


Забанен


Покинул форум
Сообщений всего: 147
Дата рег-ции: Авг. 2013  


Помог: 4 раз(а)

[+]


gheka пишет:
То есть им не присвоены значения в ручную например.
$_SERVER['HTTP_HOST'] = 'php.su';

LIME пишет:
если изменить $_SERVER['HTTP_HOST'] то ты просто не получишь этот запрос

Бред. Как я могу не получить запрос, если он уже получен?
 
 Top
EuGen Администратор
Отправлено: 15 Октября, 2013 - 17:12:09
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




esterio
Любую лицензионную проверку (которая выглядит примерно как if(licenceOk()) - возможно, с какими-нибудь параметрами) легче всего - и разумнее всего не вырезать, а модифицировать условие, добавляя в его начало 1 || - поскольку это одновременно сохранит изначальную логику.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
LIME
Отправлено: 15 Октября, 2013 - 17:13:41
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Squirrel снова ты?))
злая белка-тараторка)
а ты почитай дополнение и подумай
попробуй
Squirrel пишет:
Как я могу не получить запрос, если он уже получен?

я понял что речь идет о подделке заголовка
а вообще я люблю побредить...да
(Добавление)
EuGen пишет:
и разумнее всего не вырезать, а модифицировать условие
ну это ясно
имелось ввиду не замарачиваться с хостами вообще
 
 Top
esterio
Отправлено: 15 Октября, 2013 - 17:24:08
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




Кстати как пример можна привести IPB форум и платные модули|темы к джумле, которые крякнуты и доступне масово для скачивания
(Добавление)
Squirrel
Я вижу Вы далее играете в всезнайку
 
 Top
Squirrel
Отправлено: 15 Октября, 2013 - 17:37:16
Post Id


Забанен


Покинул форум
Сообщений всего: 147
Дата рег-ции: Авг. 2013  


Помог: 4 раз(а)

[+]


esterio Указывание на откровенный бред хамящего тролля, ты называешь "играете в всезнайку"?

(Отредактировано автором: 15 Октября, 2013 - 17:37:45)

 
 Top
MAXUS
Отправлено: 15 Октября, 2013 - 19:14:56
Post Id


Посетитель


Покинул форум
Сообщений всего: 329
Дата рег-ции: Апр. 2011  


Помог: 7 раз(а)




gheka пишет:

Или же есть более надёжные способы получения адреса сайта на который установлен скрипт.


Я присоединяюсь к вопросу. Есть ли на данный момент здравые проверенные способы привязки лицензионного ПО к домену?
 
 Top
Мелкий Супермодератор
Отправлено: 15 Октября, 2013 - 19:20:39
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




MAXUS пишет:
здравые проверенные способы привязки лицензионного ПО к домену?

Здравых нет. Т.к. сильнее всего мешает именно легальным пользователям.

Не здравые, но рабочие (проверяйте только версии PHP) - zend, ioncube


-----
PostgreSQL DBA
 
 Top
MAXUS
Отправлено: 15 Октября, 2013 - 19:43:31
Post Id


Посетитель


Покинул форум
Сообщений всего: 329
Дата рег-ции: Апр. 2011  


Помог: 7 раз(а)




gheka пишет:

Или же есть более надёжные способы получения адреса сайта на который установлен скрипт.


Тут такая идея возникла. Гуру пусть сильно не ругаются, если глупость скажу. Возьми сразу в начале скрипта захэшируй $_SERVER['HTTP_HOST'] через, например, SHA1() с какой-нибудь солью.

А потом проверяй. Если кто-то встрянет между или после, то уже пролетит. Если до, то не поможет, конечно. Но хоть что-то.

ЗЫ Само собой, что запрятать это надо.

PHP:
скопировать код в буфер обмена
  1.  
  2. $_SERVER['HTTP_HOST']=sha1($_SERVER['HTTP_HOST']."соль");
  3.  
  4. if($_SERVER['HTTP_HOST']!="правильный хэш") echo "Янки гоу хоум!";
  5.  


Еще идея, абстрактная (не проверял), как можно не дать вставить что-либо до. Бахнуть там ошибку и вычислить в какой она строке. Если строка больше, чем должна, то значит, кто-то вперед залез. Не знаю есть еще какие-нибудь способы подсчитать количество строк до определенного оператора?

(Добавление)
Мелкий пишет:
MAXUS пишет:
здравые проверенные способы привязки лицензионного ПО к домену?

Здравых нет. Т.к. сильнее всего мешает именно легальным пользователям.

Не здравые, но рабочие (проверяйте только версии PHP) - zend, ioncube


Спасибо за наводку. А там в итоге все к шифрованию сведется или шире возможности?

(Отредактировано автором: 15 Октября, 2013 - 20:11:19)

 
 Top
caballero
Отправлено: 15 Октября, 2013 - 20:10:29
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




Цитата:
Само собой, что запрятать это надо.

куда запрячешь в открытом исходном коде?

впрочем тема носит чисто теоретический характер. Я еще не встречал того который бы хотел запрятать код на PHP но его код был бы настолько ценен что его был бы смысл прятать.


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB