|
|
|
| Как сделать, чтобы php скрипт исполнялся только если он будет вызываться из другого php-скрипта на сервере или из js-скрипта (например, аякс и request.open("GET", url, true);) | |
|
|
|
|
|
|
|
для: sponge
(05.01.2008 в 02:10)
| | JavaScript сам ничего не делает. Его исполняет web-браузер, запрашивая нужное по HTTP-протоколу, через который Вы хотите, насколько я понял, запретить возможность запуска скрипта. | |
|
|
|
|
|
|
|
для: sponge
(05.01.2008 в 02:10)
| | Дополню. Из другого php-скрипта (минуя протокол http) исходный тоже на практике не вызывается. | |
|
|
|
|
|
|
|
для: Trianon
(05.01.2008 в 02:30)
| | прошу прощения, не корректно выразился.
есть некоторый пхп-сценарий, вызывается он с параметрами, например
get.php?year=2007
можно ли сделать так, чтобы результат выводился только в том случае, если он запущен из браузера пользователя, а не сграблен из скрипта на другом сервере, типа file('site.ru/get.php?year=2007') | |
|
|
|
|
|
|
|
для: sponge
(05.01.2008 в 02:41)
| | Стопроцентной защиты нет. Но каждый раз, когда вам приходит запрос к вашему скрипту, клиент посылает определенные заголовки. Неплохо было бы эти заголовки как-то просматривать. Например, я бы смотрел имя клиента и какие-нибудь другие параметры. Например, referer и ip. Если вас грабит неопытный программист, то заголовки он подделывать не будет. Тогда, скорее всего, по имени клиента, вы его словите.
Кроме того, при граббинге, обычно одной страницей не ограничиваются. Берут больше. Причем, обращения идут одно за другим, когда бот ходит по ссылкам. Можно вести лог обращений. Скажем, записывать в файл или базу последние N айпишников, с которых обращались к вашему сайту. И точное время обращения. Если обращений больше 3 за 2 секунды, то это, почти наверняка, бот. И этот ip можно занести в особый файл, для рассмотрения его, как кандидатуры на бан.
Из достоверного источника знаю, что бан по ip - эффективная вещь, при всех своих недостатках. А недостатоки просты:
1) если пользователи сидят через прокси, то у них один и тот же ip. При этом, и количество обращений с одного ip может возрастать (сработает фильтр частотный), и в случае бана, из-за одного пострадают все пользователи данного прокси.
2) у некоторых пользователей динамический ip. Если они заграбили ваш сайт один раз, вы занесли ip в бан-лист, то это не помешает переподключиться снова, получить другой ip и снова ковырять ваш сайт.
Ну и напоследок: любые заголовки можно подделать. Даже ip. Поэтому 100%-ной защиты нет и не будет. | |
|
|
|
|
|
|
|
для: SHAman
(05.01.2008 в 02:50)
| | > любые заголовки можно подделать. Даже ip
IP не заголовок. И при его подделке нельзя будет получить никакой пользы. Если не считать засорение канала пользой, конечно. | |
|
|
|
|
|
|
|
для: Unkind
(05.01.2008 в 03:04)
| | Вы уверены, что ip - не присылается в ввиде заголовка? А как? Я не уверен, вы меня с толку сбили, поэтому я спрашиваю:) | |
|
|
|
|
|
|
|
для: SHAman
(05.01.2008 в 16:14)
| | Он серваком определяется и кидается в переменные окружения | |
|
|
|
|
|
|
|
для: bronenos
(05.01.2008 в 16:37)
| | Ой, туплю. Да, точно. ip определяется на этапе установки соединения, а не на этапе посылки данных клиентом. Моя ошибка. | |
|
|
|
|
|
|
|
для: SHAman
(05.01.2008 в 16:14)
| | > Вы уверены, что ip - не присылается в ввиде заголовка? А как?
Уверен, конечно. IP светится на уровне пакетов - в каждом пакете указывается с какого IP на какой передается. | |
|
|
|
|
|
|
|
для: Unkind
(05.01.2008 в 17:09)
| | Да, я протупил. Прошу прощения. | |
|
|
|
|
|
|
|
для: SHAman
(05.01.2008 в 02:50)
| | Дополню
То, что мы пишем на PHP - программы (под названием скрипты)
То, что пишут на C++ - программы
Возможности у них схожи (в рассматриваемом плане), можно написать браузер на PHP, который будет заголовки отправлять как и настоящий, и поэтому браузер от file_get_contents или fsockopen отличается только тем, что подставляет нужные заголовки.
Тут о защите и речи нет (100%-ной) | |
|
|
|