[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Защита от подмены форм
Кир
Как можно защититься от подмены в форме? допустим у нас есть сайт или гостевая где пользователи могут отправлять и редактировать сообщения. Вот он нажимает на свое сообщение и редактирует.
Мы для вывода этого сообщения искали его в таблице posts по айди и при генерации страницы был такой код:
<input type="hidden" name="id" value="<?=$myrow['id']">
в итоге получили допустим <input type="hidden" name="id" value="599">
юзер через файрбаг или еще какую-то хрень меняет 599 на 666, отсылает форму и пошло поехало mysql_query('UPDATE posts SET text='$text' WHERE id='.$id);
в итоге меняется 666й пост вместо 599. Как бороться? такое же получается и с отправкой сообщений между пользователями, можно подменять от кого и кому...



Спустя 5 часов, 26 минут, 36 секунд (9.05.2010 - 08:21) MatrixGod написал(а):
каптчу поставь...

Спустя 3 часа, 15 минут, 26 секунд (9.05.2010 - 11:37) sergeiss написал(а):
MatrixGod - объясни, плз, каким образом капча поможет защититься от подмены? ohmy.gif

Автору темы.
Можешь использовать сессию. Или ввести скрытое поле, где сидит некий длинный уникальный идентификатор. Который если изменишь, то тогда просто данные вообще не будут приняты (ты их не примешь потому что). Это позволит юзеру давать ответы сразу в нескольких темах.

Спустя 1 час, 4 минуты, 13 секунд (9.05.2010 - 12:41) FatCat написал(а):
Сессии тоже подделываются. Перехватить их сложнее, но тоже возможно.
ИМХО, только правильное разделение прав действий пользователей.
Например в этом форуме редактировать сообщения разрешено только авторам сообщений и модераторам.
Перед редактированием считывается айдишник автора сообщения, дальше проверка:
if( $this->member['id'] != $this->post['id'] and !$this->member['is_mod'] )
{
// Окно эррорпейджа об отсутствии прав.
}

Спустя 12 часов, 3 минуты, 56 секунд (10.05.2010 - 00:45) MatrixGod написал(а):
sergeiss
каптча поможет тем что любому человеку после 5-й попытки надоест подменивать формы. это куда проще чем писать целый скрипт сессий и идентификаторов и сходить с ума... к тому же сессии как сказал FatCat, тоже подделываются.

Спустя 2 дня, 16 часов, 25 минут, 59 секунд (12.05.2010 - 17:11) Kuzya написал(а):
Согласен с FatCat. Не мучайтесь, просто проверяйте действительно ли сообщение редактирует его автор. В сессии же всёравно хранится его id, а в таблице сообщений явно записан id автора. Просто перед update`ом сравнили их и всё.

Спустя 5 часов, 26 минут, 52 секунды (12.05.2010 - 22:38) Кир написал(а):
спасибо всем)

Спустя 1 год, 11 месяцев, 26 дней, 15 минут, 40 секунд (8.05.2012 - 22:53) login8 написал(а):
Форму ты от подмены никак не защитиш.
Есть вариант с маркером сессии но это ерунда. Обходится легко, достаточно посмотреть исходник, найти скритое поле hidden ,записать число которое в нем написано в атрибуте value и записать в свою "хакерскую" форму, сессия останется и так и так в твоем браузере, её точный итендефикатор то и знать необязательно.

Спустя 16 часов, 13 минут, 8 секунд (9.05.2012 - 15:07) vital написал(а):
Че-то никто не сказал, что такой тип атак называется CSRF, и от него давно придумана защита..

Спустя 6 минут, 5 секунд (9.05.2012 - 15:13) login8 написал(а):
И какая же user posted image

Спустя 4 минуты, 12 секунд (9.05.2012 - 15:17) killer8080 написал(а):
Цитата (login8 @ 9.05.2012 - 14:13)
И какая же

Динамические ключи в форме, привязанные к сессии

Спустя 6 минут, 35 секунд (9.05.2012 - 15:23) vital написал(а):
Цитата (login8 @ 9.05.2012 - 13:13)
И какая же user posted image

Перечитал внимательно первый пост.
Пост тс не о том. Тс просто кран - как написали - надо просто проверять автора.

А вам http://bit.ly/IKuMXr
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.