![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
|
|||||
|
Модрон-ветеринар
|
Вам пытаются объяснить, что всю защиту нужно строить на стороне сервера средствами php, флеш тут ни при чем.
Загружаем ваше приложение в FireFox, включаем HttpFox, нажимаем в приложении "отправить", в HttpFox смотрим, копируем, какой полностью запрос пошел, со всем содержимым - URL скрипта, заголовками, данными, содержанием POST-полей и тд. И потом повторяем это запрос с любой частотой и полностью повторив запрос побайтно. Поставьте себе FF и HttpFox, посмотрите, что происходит, когда мы работаем с флешкой, которая общается с серверными скриптами. Многое вам станет ясно и не нужно будет так много лишних слов. 1. Случай 1 - у вас приложение грузится в браузер прямо на странице. Делаем защиту на стороне сервера. Делайте обыкновенную защиту от флуда средствами PHP. Стартуете сесиию при загрузке страницы с флешкой, в своем скрипте и делаете проверку на повтор и т.д. Вам карты в руки, как все организовать. Забудьте о флеше вообще. После загрузки страницы флешка находится на компе пользователя, загружена в браузер. Вам же говорили, что флеш никакие запросы сам не делает, от ее имени с сервером работает браузер (точнее, браузер общается с сервером от имени флеш-плеера). Клиент - это браузер, а не флеш. Флешка лежит себе в кэше, как и другие элементы страницы и при этом она еще нарисована в окне браузера на загруженной странице. делать что-то во флеше для предотвращения флуда - неправильно. 2. Случай 2 - у вас приложение работает отдельно от браузера. Делаем защиту на стороне сервера. Даже если у вас приложение работает не из браузера, а из проектора или stand-alone плеера, все равно всю проверку нужно осуществлять на стороне сервера - организовать эмуляцию сессии искусственно. Как? Например, при первой отправке, когда используете sendAndLoad передавать в ответ флешке сгенерированный уникальный идентификатор и при этом фиксировать время. То есть делать запись в БД - "idr43876r834" - "2009-18-11 21:00:18" При повторном обращении флешка передает полученный id и сервер (скрипт отправки) обязан проверять id и смотреть, можно ли отвечать или нет, достаточно ли времени прошло. Если прошло достаточно времени, то пусть скрипт отправки отвечает "OK" и отправка происходит, а в БД фиксируется новое время для этого id. Стирать полностью запись в БД можно по какому-то таймауту. 3. Случай 3. Делаем защиту от флуда на стороне флешки. Если все-таки пожелаете во флеше все организовать, метод setTimeout() вам поможет. Но, повторюсь, это не будет 100%-й защитой. Просто при первой отправке ставите свойство enabled = false для кнопки "Отправить" и одновременно с этим выставляете таймер. По истечени времени таймер должен будет дернуть функцию, которая опять сделает для кнопки enabled = true и все: send_btn.onRelease = function () { lv.sendAndLoad(.....); //отправляем данные, дергаем серверный скрипт this.enabled = false ; //деактивируем кнопку id = setTimeout(enableBtn, 10000); //через 10 сек. кнопка опять "включится" для использования } function enableBtn() { send_btn.enabled = true ; //активируем кнопку } Последний раз редактировалось mooncar; 10.10.2009 в 01:02. |
![]() |
Часовой пояс GMT +4, время: 20:43. |
|
|
« Предыдущая тема | Следующая тема » |
|
|