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 :: Защита скрипта от несанкционированного вызова [3]
Покинул форум
Сообщений всего: 27
Дата рег-ции: Май 2012
Помог: 0 раз(а)
Вот что не понятно:
Мелкий пишет:
2) вставляете на страницу JS, который при открытии страницы заменит содержимое поля на другое значение. И сохраняете желаемое значение в сессию
3) в скрипте голосования проверяете, совпадает ли пришедшее значение с сохранённым в сессию
Мелкий пишет:
Поэтому мы можем в поле писать время старта, на стороне JS как-нибудь хитро вычислить небольшое число, прибавить это число к таймштампу и проверять в обработчике, что таймштамп должен быть не вставленный в поле, а новый (+ совпадать с тем, что сохранён в сессии как нужный после преобразования).
Как значение после преобразования JS может быть записано в сессию? Ведь JS выполняется уже на стороне клиента.
Я так понимаю, что при открытии страницы в сессию и в скрытое поле записывается какое-то исходное значение, которое потом на стороне клиента модифицируется при помощи JS и передается обработчику через POST. А в обработчике при помощи php применяется точно такой же алгоритм модификации того самого исходного значения, сохраненного в сессионной переменной. И результат сравнивается с параметром, полученным из POST.
Я правильно понимаю? Аж вспотел, пока формулировал.
Мелкий
Отправлено: 21 Мая, 2012 - 21:27:27
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
Да, всё верно.
----- PostgreSQL DBA
_tvlad
Отправлено: 21 Мая, 2012 - 21:42:42
Новичок
Покинул форум
Сообщений всего: 27
Дата рег-ции: Май 2012
Помог: 0 раз(а)
Спасибо.
Первый и третий пункт реализовал, а для второго надо поближе познакомиться с JS.
И вот еще какая закавыка. Чтобы тестировать защиту, надо уметь имитировать нападение. Если первый пункт (временной интервал) можно протестировать и "вручную", при помощи браузера, то для остальных нужен робот.
Пошел искать в Гугле, как написать робота. Вот так и становятся злыми хакерами. Он ведь тоже, наверное, когда-то был добрым. Потом его кто-то обидел, и он стал злым.
LIME
Отправлено: 21 Мая, 2012 - 21:53:23
Активный участник
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
_tvlad хз кто там добрый
но
если уж атаки с 2ух провов нопиши им гневное письмо
и логи вложи
)))) (Добавление)
голосование не накручивают со злости
либо школьник дурью мается
либо конкуренты наняли (Добавление)
скорее первое
либо наняли ламера)) (Добавление)
LIME пишет:
нопиши им гневное письмо
а лучше задействуй для этого заказчика
для большего офциоза (Добавление)
+ рисанешся типа вычислил откуда ноги растут)) гыыы)))
_tvlad
Отправлено: 21 Мая, 2012 - 22:14:10
Новичок
Покинул форум
Сообщений всего: 27
Дата рег-ции: Май 2012
Помог: 0 раз(а)
Не иначе, кто-то кому-то пузырь поставил.
Формально я мог бы вообще ничего не предпринимать: в ТЗ про защиту не было ни слова, и никто мне за дополнительные телодвижения уже не заплатит. Но есть азарт и любопытство.
Так что спасибо пионеру, у меня есть стимул для развития.
DeepVarvar
Отправлено: 21 Мая, 2012 - 22:15:30
Активный участник
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
LIME пишет:
с разных агентов но одного ип нечастые запросы пропускал?))
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
DeepVarvar лениво)) _tvlad еще есть момент
есл не дурак писал робота то робот проверит после работы инкремент голосов
тогда есл робота поймал надо ему отдать контент с лжеинкрементом))
чтоб при настройке бота хакер не напрягся и не стал копать исходнк а лег спать))
_tvlad
Отправлено: 23 Мая, 2012 - 15:08:01
Новичок
Покинул форум
Сообщений всего: 27
Дата рег-ции: Май 2012
Помог: 0 раз(а)
Заработала защита, попал хакерок! (Неудачные попытки я тоже регистрирую.)
Осталось еще придумать какой-нибудь дикий алгоритм смены алгоритмов, и всё, салют мальчишу!
Спасибо всем за помощь!
LIME
Отправлено: 23 Мая, 2012 - 15:11:35
Активный участник
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
_tvlad пишет:
дикий алгоритм смены алгоритмов
rand
_tvlad
Отправлено: 23 Мая, 2012 - 15:35:16
Новичок
Покинул форум
Сообщений всего: 27
Дата рег-ции: Май 2012
Помог: 0 раз(а)
LIME пишет:
_tvlad пишет:
дикий алгоритм смены алгоритмов
rand
Если rand, то надо будет как-то передавать номер алгоритма обработчику. А если формировать его, к примеру, из даты (чтобы менять раз в день), то JS-функция и php-обработчик смогут вычислять его независимо друг от друга.
LIME
Отправлено: 23 Мая, 2012 - 15:36:34
Активный участник
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
в сессию пиши номер алгоритма
_tvlad
Отправлено: 23 Мая, 2012 - 16:05:21
Новичок
Покинул форум
Сообщений всего: 27
Дата рег-ции: Май 2012
Помог: 0 раз(а)
LIME пишет:
в сессию пиши номер алгоритма
Тут я еще не совсем уверен, может ли робот сначала правильно открыть сессию, открыв страницу голосования, а потом уже атаковать, т. е. обращаться к скрипту с передачей нужных параметров. Если может, то сессионные переменные не спасут (кроме, разве что, измерения промежутка времени, к которому, впрочем, легко подстроиться, если понять, что дело в нем).
Надо бы углубиться в тему ботостроения.
LIME
Отправлено: 23 Мая, 2012 - 16:08:53
Активный участник
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
чиивоо?
_tvlad
Отправлено: 23 Мая, 2012 - 16:15:35
Новичок
Покинул форум
Сообщений всего: 27
Дата рег-ции: Май 2012
Помог: 0 раз(а)
LIME пишет:
чиивоо?
Может и глупость сказал, не знаю. Не владею пока темой. Но это пройдет.
_tvlad
Отправлено: 24 Мая, 2012 - 19:58:27
Новичок
Покинул форум
Сообщений всего: 27
Дата рег-ции: Май 2012
Помог: 0 раз(а)
Я стал регистрировать причину его неудачных попыток и пришел к интересному выводу: всё-таки он каким-то образом голосует с моей страницы. Сессионная переменная определена, в скрытых полях - правильная информация, и единственное, что ему мешает - временной интервал.
Мне что-то говорили про фреймы и jQuery, с помощью которых, вроде, можно автоматически нажимать на чужие кнопки. Может, кто-нибудь про это знает?
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.