Показать сообщение отдельно
Старый 10.10.2009, 04:22
dj_pont вне форума Посмотреть профиль Отправить личное сообщение для dj_pont Найти все сообщения от dj_pont
  № 16  
Ответить с цитированием
dj_pont

Регистрация: Mar 2009
Сообщений: 23
Цитата:
Вам пытаются объяснить, что всю защиту нужно строить на стороне сервера средствами php, флеш тут ни при чем.
А я пытаюсь объяснить, что чёрт с защитой, я её на пхп организовал, мне нужна тупа кнопка с таймером!!!

Цитата:
Загружаем ваше приложение в FireFox, включаем HttpFox, нажимаем в приложении "отправить", в HttpFox смотрим, копируем, какой полностью запрос пошел, со всем содержимым - URL скрипта, заголовками, данными, содержанием POST-полей и тд. И потом повторяем это запрос с любой частотой и полностью повторив запрос побайтно.
Поставьте себе FF и HttpFox, посмотрите, что происходит, когда мы работаем с флешкой, которая общается с серверными скриптами. Многое вам станет ясно и не нужно будет так много лишних слов.
Вы вчитайтесь что я пишу и не будет лишних слов с вашей стороны. Будут сессии! После первой же успешной отправки будет удалена сессия, и по старой вы уже никуда ничего не отошлёте. Хоть HttpSuperMegaFox - он перехватит существующую сессию, которые выполниться только ОДИН раз!!! И ещё раз скажу, что можно реализовать динамическую переменную, который ваш хттпфокс перехватит, а в следующий раз, оп, о чудо, другая переменная, а в третий раз ещё другая... Прочитайте мануал по пхп и сессиям.

Цитата:
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 и все:

Код AS1/AS2:
send_btn.onRelease  = function  () {
	lv.sendAndLoad(.....); //отправляем данные, дергаем серверный скрипт
	this.enabled = false ; //деактивируем кнопку
	id = setTimeout(enableBtn, 10000); //через 10 сек. кнопка опять "включится" для использования
}
 
function  enableBtn() {
	send_btn.enabled = true ; //активируем кнопку
}
Вот за это СПАСИБО. Мне это и надо, это не защита от флуда, это защита от левых нажатий кнопки.

Добавлено через 8 минут
Цитата:
Сообщение от wvxvw Посмотреть сообщение
Кроме того, ставить защиту "от пользователя" - бессмысленно потому, что пользователи, как правило, безобиные, защищать надо от программ, которые притворяются пользователями. HTTFox - довольно безобидная утилита, кроме нее существует масса анализаторов трафика и даже специального софта заточенного для отправки спама куда угодно. HTTP_REFERRER и USER_AGENT подделываются на ура если нужно, это не защита, а филькина грамота. Иногда усложняет жизнь другим, вполне себе легитимным приложениям, а от спаммеров оно как мертвому припарка.
Именно поэтому будут работать все 4 метода одновременно. В 3-х из них каждый раз генериться случайное число уничтожающееся при первой же успешной отправке. И ни один скрипт не сумеет это сделать...Ну может только супр-машина какая, раз в год и сможет подобрать 3 числа, что они совпадут, так увеличить диапозон от 10000 до 99999999999999, тогда пару веков может и хватит...