[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Принципы элементарной защиты PHP скриптов
hammer_tm
Здравствуйте!
Какой, по вашему мнению, метод защиты скрипта для обработки запросов наиболее эффективен?

1 Вариант:

if( ereg( '^http://' .$HTTP_HOST ,getenv ('HTTP_REFERER' ))){
echo "Все, ок! Хост свой, выполняем скрипт";
................

Сам скрипт
................
}
else {
die('Ошибка! Чужой реф...');
}


2 Вариант:

Из другого скрипта, на нашем хосте, передаются следующие данные:

define ( 'whoishost', true );


А это наш скрипт обработки запросов:

if (! defined ( 'whoishost' )) {
die ( "Ошибка! Чужой реф!" );
}
else {
.................
Сам скрипт
................
}


Я где-то слышал, что в 1 варианте, при большом желании злоумышленник может подделать и законспирироваться под имя хоста.
Так ли это на самом деле? И какие есть плюсы и минусы этих вариантов?

hydrogen
Цитата
Я где-то слышал, что в 1 варианте, при большом желании злоумышленник может подделать и законспирироваться под имя хоста.

Этот заголовок несложно подделать и без большого желания.

Во втором варианте не понял:
Цитата
Из другого скрипта, на нашем хосте, передаются следующие данные

Как передаются? Куда передаются? blink.gif
Вы имеете в виду проверку через сессию?

Оффтоп: else'ы в данном случае не нужны. Только усложняют структуру кода. Просто if (...) die('=D');

_____________
inpost
Ты где про ereg вычитал? Его уже как лет 5 нигде не преподают smile.gif

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
hydrogen
Цитата
Вы имеете в виду проверку через сессию?

Или защиту от прямого доступа к подключаемым файлам? Так лучше их вообще за пределами веб-рута держать.

_____________
Hello
hammer_tm используйте второй вариант

_____________
VPS от 5$, первые 2 месяца - бесплатно.
T1grOK
Цитата (hammer_tm @ 27.11.2012 - 00:26)
if (! defined ( 'whoishost' )) {
die ( "Ошибка! Чужой реф!" );
}
else {
  .................
                        Сам скрипт
                        ................
  }

else здесь лишний, в случай чего die остановит скрипт и все.

_____________
Mysql, Postgresql, Redis, Memcached, Unit Testing, CI, Kohana, Yii, Phalcon, Zend Framework, Joomla, Open Cart, Ymaps, VK Api
hammer_tm
Цитата
Или защиту от прямого доступа к подключаемым файлам?


Именно так :-)

Цитата
Ты где про ereg вычитал? Его уже как лет 5 нигде не преподают


Ну я не в курсе, преподают его или нет, т.к. я самоучка :-) php мое хобби


Всем спасибо за помощь, буду пользоваться вторым вариантом

inpost
if(!defined()) {
exit();
}
lalala
обычный код...
без else!

Не будет лесенки.

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.