Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> защита от ДОСеров 
:(
    Опции темы
Archon7th
Дата 9.10.2008, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 107
Регистрация: 22.4.2005
Где: Витебск Белорусия

Репутация: нет
Всего: нет



Как отсечь многократное выполнение скрипта если пользователь допустим на форме перехода зажмет доупора Enter
и получится что серия пары SELECT-UPDATE запросов вместо SELECT1-UPDATE1 SELECT2-UPDATE2 SELECT3-UPDATE3 наложится как SELECT1 SELECT2 SELECT3 UPDATE1 UPDATE2 UPDATE3

как от этого защититься или как ограничить число переходов страниц от юзера скажем до 1 клика в секунду




я пробовал вводить Замки через создание переменных и флагов на юзерах
пробовал лочить таблицу, ничего не помагает, сервак очень быстрый 4х ядерный и получается что все запросы всёровно обрабатываются отдновременно, а небольшая задержка базы в несколько мсек оказывается более чем достаточной

уже подумываю добавлять в некоторые места Delay
но всёровно думаю не поможет
--------------------
CPU not found. Running software emulation.
PM MAIL ICQ   Вверх
destrd
Дата 9.10.2008, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 1.10.2008

Репутация: 3
Всего: 4



А что происходит то? Тут и без зажатого Enter такое может быть, пользователи могут одновременно зайти на страницу.
--------------------
Some people, when confronted with a problem, think, "I known, I'll use regular expressions." Now they have two problems.        -- Jamie Zawinski in comp.lang.emacs
PM MAIL ICQ   Вверх
Archon7th
Дата 9.10.2008, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 107
Регистрация: 22.4.2005
Где: Витебск Белорусия

Репутация: нет
Всего: нет



если пользователи разные, то ничего страшного не произойдет, а вот если пользователь один, то получается наложение, т.к. в UPDATE используется одно и то же поле базы


именно что нужно отсеять повторное обращение одного и того же юзера
в идеале конечно же было бы иметь отсечение вне зависимоти от времени
но и подошла бы защита запрета второго перехода в одну отдельно взятую секунду

Это сообщение отредактировал(а) Archon7th - 9.10.2008, 15:42
--------------------
CPU not found. Running software emulation.
PM MAIL ICQ   Вверх
SamDark
Дата 9.10.2008, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый кот
***


Профиль
Группа: Участник
Сообщений: 1424
Регистрация: 25.7.2006
Где: Voronezh

Репутация: 10
Всего: 38





--------------------
rmcreative.ru — Это жжж неспроста...
yiiframework.ru — О фреймворке Yii на русском.
reggi — здесь я регистрирую домены
PM MAIL WWW GTalk Jabber MSN   Вверх
georgiy11
Дата 9.10.2008, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 29.9.2008

Репутация: нет
Всего: нет



Я конечно не профи в этом, но а если сценарий запускать через функцию "засыпания" sleep() или usleep(), перед соединением с БД.
PM MAIL   Вверх
Deepthroat
Дата 9.10.2008, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 24.9.2007
Где: Outer Heaven

Репутация: 1
Всего: 2



А если на стороне клиента запретить отправку данных более одного раза - просто блокировать поля ввода после однократной отправки.
PM MAIL WWW ICQ   Вверх
bobik02
Дата 9.10.2008, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 451
Регистрация: 26.11.2007

Репутация: 2
Всего: 14



Цитата(Deepthroat @  9.10.2008,  18:02 Найти цитируемый пост)
А если на стороне клиента запретить отправку данных более одного раза - просто блокировать поля ввода после однократной отправки.

легко обойти


--------------------
Have a nice day
PM   Вверх
ksnk
Дата 9.10.2008, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Archon7th, А транзакции помогают? Ну, на худой конец - таблицы залочить

Добавлено через 1 минуту и 10 секунд
Цитата

пробовал лочить таблицу

Как это - не помогает smile ? Может плохо лочил?


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Archon7th
Дата 9.10.2008, 21:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 107
Регистрация: 22.4.2005
Где: Витебск Белорусия

Репутация: нет
Всего: нет



там проблема тогда в том же:

грубо проблему с локом можно описать так:
LOCKED - проверка замка
LOCK - установка замка
SELECT
UPDATE
UNLOCK

порядок иногда будет выглядить так
проблема решается лишь частично, т.е. иногда срабатывает иногда нет, причем чаще всего нет

LOCKED1=false LOCKED2=false LOCK1 LOCK2 (в этом месте база почемуто еще не залочена первым замком но второй замок иногда не ставится вовсе, хотя LOCKED возвращает всёровно false как для 1 так и для 2 )  SELECT1 SELECT2 UPDATE1 UPDATE2 UNLOCK1 UNLOCK2

пробовал и менять порядок с LOCKED и  LOCK - не получается тоже
т.е. с паралельными запросами кализий нет и не возникает, а вот с таким задалбливанием всёровно работает


код немогу привести, т.к. проблема не в одном файлике, а в целой цепочке модулей
--------------------
CPU not found. Running software emulation.
PM MAIL ICQ   Вверх
ksnk
Дата 9.10.2008, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Речь идет про mysql?

Вот цитата из документации
Цитата

mysql> LOCK TABLES trans READ, customer WRITE;
mysql> SELECT SUM(value) FROM trans WHERE customer_id=some_id;
mysql> UPDATE customer SET total_value=sum_from_previous_statement
        WHERE customer_id=some_id;
mysql> UNLOCK TABLES;


В каком месте и зачем  вызывается LOCKED?


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
solenko
Дата 10.10.2008, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: 34
Всего: 67



В форму добавляете хидден с уникальным идентификатором поля. Этот же идентификатор записываете пользователю в сессию. По приходу формы на сервер проверяем существует ли в сессии такой идентефикатор. Если да -- ансетим его и начинаем обработку. Если нет -- редирект(ну или просто сообщение о ошибке)


--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0749 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.