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]

 PHP.SU

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


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

> Описание: Как защитить скрипт голосования
_tvlad
Отправлено: 21 Мая, 2012 - 21:22:07
Post Id


Новичок


Покинул форум
Сообщений всего: 27
Дата рег-ции: Май 2012  


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




Вот что не понятно:
Мелкий пишет:
2) вставляете на страницу JS, который при открытии страницы заменит содержимое поля на другое значение. И сохраняете желаемое значение в сессию
3) в скрипте голосования проверяете, совпадает ли пришедшее значение с сохранённым в сессию

Мелкий пишет:
Поэтому мы можем в поле писать время старта, на стороне JS как-нибудь хитро вычислить небольшое число, прибавить это число к таймштампу и проверять в обработчике, что таймштамп должен быть не вставленный в поле, а новый (+ совпадать с тем, что сохранён в сессии как нужный после преобразования).

Как значение после преобразования JS может быть записано в сессию? Ведь JS выполняется уже на стороне клиента.
Я так понимаю, что при открытии страницы в сессию и в скрытое поле записывается какое-то исходное значение, которое потом на стороне клиента модифицируется при помощи JS и передается обработчику через POST. А в обработчике при помощи php применяется точно такой же алгоритм модификации того самого исходного значения, сохраненного в сессионной переменной. И результат сравнивается с параметром, полученным из POST.
Я правильно понимаю? Аж вспотел, пока формулировал.
 
 Top
Мелкий Супермодератор
Отправлено: 21 Мая, 2012 - 21:27:27
Post Id



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


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


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




Да, всё верно.


-----
PostgreSQL DBA
 
 Top
_tvlad
Отправлено: 21 Мая, 2012 - 21:42:42
Post Id


Новичок


Покинул форум
Сообщений всего: 27
Дата рег-ции: Май 2012  


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




Спасибо.
Первый и третий пункт реализовал, а для второго надо поближе познакомиться с JS.
И вот еще какая закавыка. Чтобы тестировать защиту, надо уметь имитировать нападение. Если первый пункт (временной интервал) можно протестировать и "вручную", при помощи браузера, то для остальных нужен робот.
Пошел искать в Гугле, как написать робота. Вот так и становятся злыми хакерами. Он ведь тоже, наверное, когда-то был добрым. Потом его кто-то обидел, и он стал злым. Нахмурился
 
 Top
LIME
Отправлено: 21 Мая, 2012 - 21:53:23
Post Id


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


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


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




_tvlad хз кто там добрый
но
если уж атаки с 2ух провов нопиши им гневное письмо
и логи вложи
))))
(Добавление)
голосование не накручивают со злости
либо школьник дурью мается
либо конкуренты наняли
(Добавление)
скорее первое
либо наняли ламера))
(Добавление)
LIME пишет:
нопиши им гневное письмо
а лучше задействуй для этого заказчика
для большего офциоза
(Добавление)
+ рисанешся типа вычислил откуда ноги растут)) гыыы)))
 
 Top
_tvlad
Отправлено: 21 Мая, 2012 - 22:14:10
Post Id


Новичок


Покинул форум
Сообщений всего: 27
Дата рег-ции: Май 2012  


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




Не иначе, кто-то кому-то пузырь поставил.
Формально я мог бы вообще ничего не предпринимать: в ТЗ про защиту не было ни слова, и никто мне за дополнительные телодвижения уже не заплатит. Но есть азарт и любопытство.
Так что спасибо пионеру, у меня есть стимул для развития.
 
 Top
DeepVarvar Супермодератор
Отправлено: 21 Мая, 2012 - 22:15:30
Post Id



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


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


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




LIME пишет:
с разных агентов но одного ип нечастые запросы пропускал?))
Давай попробуем - выйди в аську Закатив глазки
 
 Top
LIME
Отправлено: 21 Мая, 2012 - 23:09:18
Post Id


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


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


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




DeepVarvar лениво))
_tvlad еще есть момент
есл не дурак писал робота то робот проверит после работы инкремент голосов
тогда есл робота поймал надо ему отдать контент с лжеинкрементом))
чтоб при настройке бота хакер не напрягся и не стал копать исходнк а лег спать))
 
 Top
_tvlad
Отправлено: 23 Мая, 2012 - 15:08:01
Post Id


Новичок


Покинул форум
Сообщений всего: 27
Дата рег-ции: Май 2012  


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




Заработала защита, попал хакерок! (Неудачные попытки я тоже регистрирую.)
Осталось еще придумать какой-нибудь дикий алгоритм смены алгоритмов, и всё, салют мальчишу!
Спасибо всем за помощь!
 
 Top
LIME
Отправлено: 23 Мая, 2012 - 15:11:35
Post Id


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


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


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




_tvlad пишет:
дикий алгоритм смены алгоритмов
rand
 
 Top
_tvlad
Отправлено: 23 Мая, 2012 - 15:35:16
Post Id


Новичок


Покинул форум
Сообщений всего: 27
Дата рег-ции: Май 2012  


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




LIME пишет:
_tvlad пишет:
дикий алгоритм смены алгоритмов
rand

Если rand, то надо будет как-то передавать номер алгоритма обработчику. А если формировать его, к примеру, из даты (чтобы менять раз в день), то JS-функция и php-обработчик смогут вычислять его независимо друг от друга.
 
 Top
LIME
Отправлено: 23 Мая, 2012 - 15:36:34
Post Id


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


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


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




в сессию пиши номер алгоритма
 
 Top
_tvlad
Отправлено: 23 Мая, 2012 - 16:05:21
Post Id


Новичок


Покинул форум
Сообщений всего: 27
Дата рег-ции: Май 2012  


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




LIME пишет:
в сессию пиши номер алгоритма

Тут я еще не совсем уверен, может ли робот сначала правильно открыть сессию, открыв страницу голосования, а потом уже атаковать, т. е. обращаться к скрипту с передачей нужных параметров. Если может, то сессионные переменные не спасут (кроме, разве что, измерения промежутка времени, к которому, впрочем, легко подстроиться, если понять, что дело в нем).
Надо бы углубиться в тему ботостроения.
 
 Top
LIME
Отправлено: 23 Мая, 2012 - 16:08:53
Post Id


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


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


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




чиивоо?
 
 Top
_tvlad
Отправлено: 23 Мая, 2012 - 16:15:35
Post Id


Новичок


Покинул форум
Сообщений всего: 27
Дата рег-ции: Май 2012  


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




LIME пишет:
чиивоо?

Может и глупость сказал, не знаю. Не владею пока темой. Но это пройдет.
 
 Top
_tvlad
Отправлено: 24 Мая, 2012 - 19:58:27
Post Id


Новичок


Покинул форум
Сообщений всего: 27
Дата рег-ции: Май 2012  


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




Я стал регистрировать причину его неудачных попыток и пришел к интересному выводу: всё-таки он каким-то образом голосует с моей страницы. Сессионная переменная определена, в скрытых полях - правильная информация, и единственное, что ему мешает - временной интервал.
Мне что-то говорили про фреймы и jQuery, с помощью которых, вроде, можно автоматически нажимать на чужие кнопки. Может, кто-нибудь про это знает?
 
 Top
Страниц (4): « 1 2 [3] 4 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB