Контроль данных из формы

  • Автор темы Автор темы ForJest
  • Дата начала Дата начала
Статус
В этой теме нельзя размещать новые ответы.
Фанат
Гы :).
Но для правки целой системы к примеру этого форума нужно будет упереться рогом и надолго. В том время как проверка реферера делается за пять минут :).
 
crocodile2u
Аргументы стали убедительны? :)
KR, Фанат
Да. Получается нужно просто хранить одно число, которое известно только странице, с которой проиводится пост. При создании дёшево и сердито. При переделке не менее сердито, но не дёшево :)

KR
А по времени таймаут бессмысленно, потому что я могу набирать довольно долго свой пост ^). А какую инфу зашить туда? Хотя да, с помощью JS - и этот JS ещё и закодировать!Тогда это будет вообще неполомаемо :)
 
Я верю, что нужно проверять HTTP_REFERER и ставить себе Kerio Firewall, чтобы не подстрять на тех серверах, где этого не делают!

Забавно...
 
(только добрался до компа)

ForJest, спасибо за наглядную демонстрацию. :)

Хотя, как верно отметил выше Фанат, железным решением будет специальное поле в форме со значением, хранящимся также в сессии.
 
:)

Автор оригинала: Sad Spirit
(только добрался до компа)

ForJest, спасибо за наглядную демонстрацию. :)

Хотя, как верно отметил выше Фанат, железным решением будет специальное поле в форме со значением, хранящимся также в сессии.

Ситуация:
Пользователь по ссылке открыл два окна с формой (через open in new window или просто shift click). Обе формы заполнил и отправил. Его ждет сюрприз?
 
.des.
Не обязательно каждый раз заново генерировать это число.
 
McLay это понятно.. но будет ли это столь простым решением, как банальная проверка реферера?
 
Долго читал я вашу треаду и решил поделиться нажитым опытом:

Была у меня на формах проверка реффереров... Вначале некоторые клиенты звонили... Объяснять то им бесполезно... Потом пришёл шеф и надавал по москам/рукам: Что за х..? Почему я из Сафари (MAC OS X) немогу данные послать? Это что за Неправильная передача данных.
Оказывается Сафари реферрера не передаёт или не всегда передаёт. А там было - если реферрера нет или не с того домена - значит пшёл нах... Так что, как бы формы тут не писали Васи - не панацея это, а для некоторой специфической публики даже и вред... Представь если 50% узеров сайта отсыпяться изза того что их провайдер с proxy или чем ещё херит эти реффереры? Так что как тут сказали - надо hiddenы делать каким либо образом + проверка идла... Да и потом - если Вася такой линк на сайт вставит (гостевухи и форумы не вщёт) - значит хана вашему сайту...
 
Я верю, что нужно проверять HTTP_REFERER и ставить себе Kerio Firewall, чтобы не подстрять на тех серверах, где этого не делают!


Ха-ха, прикольно ;)
 
ONK
Проверяй :) Твои аргументы к сожалению млеют перед жестокой правдой реальности :). Потрудись изучить трэд.
ZaZa
Потрудись прочитать трэд.
 
ONK
Делай проверки как ты делаешь. Это правильно, хорошо и безопасно.
Но теоретизирование твоё насчёт
Нельзя пологать на то, что якобы должен сделать браузер, если ему (браузеру) напрямую не указано сделать это.
как раз и является вредным. Потому что в десяти местах написано про то, что на реф нельзя полагаться, но лучше его всё-таки проверить, если он есть. А ты продолжаешь говорить о том, что его вообще не надо проверять. Я нахожу твои рассуждения не выдерживающими критики. И вообще ты пытаешься зачеркнуть всё, что было сказано в этом трэде. Умные люди поймут, что нужно проверять формы, впихивать hidden поля, ещё другие способы защиты. Только это придёт со временем/осознанием. Потому что весь написанный без учёта этого софт переделывать довольно долго. Существующие библиотеки, решения и т.п. для разработки нового - тоже.

Я говорю - проверять нужно, это приносит пользу. Конкретную и простую пользую. И ничего не стоит. Такие как ты приходят, не разобравшись начинают талдычить - это не 100%-я гарантия, поэтому это плохо. И наслушавшись вас другие начинают талдычить тоже самое. И вообще даже после убийственных примеров эта идея не хочет умирать без боя - приходят новые и новые алологеты этой веры.
А что самое странное и необычное - вставить 6 строчек в скрипты не составляет практически никакого труда.
-----------------------------------------------------------------------------
http://phpclub.ru/talk/showthread.php?postid=366785#post366785
В общем тебе туда - там всё сказано.
-----------------------------------------------------------------------------
Скажу попроще. Если за 10 копеек я могу избавить окружающих от 80% опасности, и за 20 рублей ото всех возможных, то почему решение за 10 копеек является неприемлемым, если у меня нет 20 рублей?
-----------------------------------------------------------------------------
Дай мне чёткую информацию - в скольки процентах случаев
эта защита не сработает? Это будет интересно. В одном из
тысячи? В одном из ста? В одном из десяти? Как ты это определишь? Какие твои аргументы, что это является вредной привычкой? Лучше не будет никакой защиты, чем она будет не 100%-я?
-----------------------------------------------------------------------------
 
Фанат
Ну ты же умный человек. Посчитай, сколько нужно потратить времени, чтобы пропатчить этот форум через HTTP_REFERER, запихав проверку в Самый Главный Инклудник и сколько чтобы пропатчить (и заметь протестить) все формы? Если можно выкопать колодец, то почему от этого нужно отказваться в пользу того, что "водопровод гораздо лучше", если он всё равно даёт воду?
 
Фанат
Да. Замечательно :) Но почему-то ему кажется что достаточно одного предложения, чтобы опровергнуть, всё что было сказано в этом трэде, а мне нужно писать четырёхкилобайтные посты, странно да? :)
И какой-нибудь ZaZa придёт, не прочитав трэд и в очередной раз скажет - херня этот ваш реф, правильно ONK говорит!
 
neko
А придумывается и тестится это сколько? :) Ты посчитай формы на этом форуме, и подумай, сколько темплейтов и обработчиков формы нужно поправить... И это нужно будет сделать в _конкретных_ местах. Потом мы с тобой можем поговорить, о том, как это легко. Или попробуй убедить администрацию форума, что это нужно сделать :)
 
ONK
Ткни мне в место, где я говорю, что нужно пользователей без рефера посылать? Желательно в слова и место в коде.
 
Ах да, ONK ещё дай мне способ, который бы совместил убийство рефа и пост формы, хорошо :)? Для дальнейших моих исследований :)
 
ONK
ONK, а сессионные куки в этом новом окошке сохраняются? Меня как понимаешь интересует практическое решение для данной задачи :)
 
Мда, чуть что - сразу ZaZa... Не понять мне тебя, ForJest, в одном месте (http://phpclub.ru/talk/showthread.php?postid=366785#post366785) у тебя это панацея, в другом (http://phpclub.ru/talk/showthread.php?postid=367171#post367171) уже соглашаешся, что это не совсем надёжно... Кста, я тред прочёл, ненадо, ладно. Просто, если кто то будет такое делать - он постарается и реферрер забить. Тут уже это сказали правда...
Просто вся твоя теория опирается на то, что мы на стороне сервера не можем предсказать, и быть уверенным в том, что именно эти даннные правильные - следовательно пологаться на них. И остаётся часть юзеров без реферрера - следовательно защита не столь действующая, как бы тебе этого не хотелось и уязвимость осталась.
Да, я согласен - переколбасить форум/портал или чё там ещё, причём чужой на эту тему - дорогое удовольствие, но если это требуется - придётся делать. А те кто выберут 10 копеечную защиту - пускай теряют клиентов/юзеров.
На эту тему можно спорить долго и каждый будет прав, безсмысленно дальше продолжать дискусию/спор. Ну закроешь ты взлом на 80% случаев - хорошо, но 20% где? Ты ведь сам предлагаешь решение, оставляя в нём дыру для хака.
 
ОК, ложите - потом интерестно будет посмотреть на вашу защиту по рефереру...
 
ZaZa
Вот что ты пытаешься мне доказать? Что HTTP_REFERER проверять не нужно? Совсем не нужно?
Я пытаюсь доказать, что его проверять полезно и нужно вне зависимости от остальных способов защиты. Потому что если бы здесь стояла такая защита - этого длинного занимательно трэда бы не получилось, не находишь? Потому что я бы обломался искать новые дыры, вот и всё.
И если останется 20% (я не знаю сколько именно), может быть 1% - это уже будет эффективной защитой. Потому что 99 человек из ста кликнув на эту ссылку могут увидеть, что происходит что-то не то. И сказать об этом админитрации, не находишь? Так эффективна эта защита или нет? Когда придёт этот 1%? Первым? Последним? Придёт он до того, как те, кто защищены прокликают? После того? Будет ли жива эта ссылка? Так что не нужно рассуждать только категориями процентов - есть конкретный эффект - хаккер не может получить желаемого в большинстве случаев. А именно это и важно.

ONK
Реф передаётся на ура. Есть ещё способы?
PHP:
<?php
if (isset($_GET['new_win']))
{
?>
<form method='POST' action='http://service.com/ref_test.php'>
<input type='hidden' name='message' value='Fucking HTTP_REFERER!'>
</form>
<script language='JavaScript'>
document.forms[0].submit();
</script>
<?php 
}
else
{
?>
<script language='JavaScript'>
newwin = window.open('<? echo $_SERVER['SCRIPT_NAME'],'?new_win=1';?>', null , '');
</script>
<?php 
}
?>

-~{}~ 10.08.04 14:38:

Фанат
Я из желания светлого доброго вечного готов выслушать все разумные аргументы или даже выводы из иррациональной позиции.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху