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

Статус
В этой теме нельзя размещать новые ответы.

ForJest

- свежая кровь
Фанат
Гы :).
Но для правки целой системы к примеру этого форума нужно будет упереться рогом и надолго. В том время как проверка реферера делается за пять минут :).
 

ForJest

- свежая кровь
crocodile2u
Аргументы стали убедительны? :)
KR, Фанат
Да. Получается нужно просто хранить одно число, которое известно только странице, с которой проиводится пост. При создании дёшево и сердито. При переделке не менее сердито, но не дёшево :)

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

Kirs

Fireman
Я верю, что нужно проверять HTTP_REFERER и ставить себе Kerio Firewall, чтобы не подстрять на тех серверах, где этого не делают!

Забавно...
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
(только добрался до компа)

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

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

.des.

Поставил пиво кому надо ;-)
:)

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

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

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

McLay

PHP5 BetaTeam
.des.
Не обязательно каждый раз заново генерировать это число.
 

.des.

Поставил пиво кому надо ;-)
McLay это понятно.. но будет ли это столь простым решением, как банальная проверка реферера?
 

ZaZa

Guest
Долго читал я вашу треаду и решил поделиться нажитым опытом:

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

Gas

может по одной?
Я верю, что нужно проверять HTTP_REFERER и ставить себе Kerio Firewall, чтобы не подстрять на тех серверах, где этого не делают!


Ха-ха, прикольно ;)
 

ForJest

- свежая кровь
ONK
Проверяй :) Твои аргументы к сожалению млеют перед жестокой правдой реальности :). Потрудись изучить трэд.
ZaZa
Потрудись прочитать трэд.
 

ForJest

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

Я говорю - проверять нужно, это приносит пользу. Конкретную и простую пользую. И ничего не стоит. Такие как ты приходят, не разобравшись начинают талдычить - это не 100%-я гарантия, поэтому это плохо. И наслушавшись вас другие начинают талдычить тоже самое. И вообще даже после убийственных примеров эта идея не хочет умирать без боя - приходят новые и новые алологеты этой веры.
А что самое странное и необычное - вставить 6 строчек в скрипты не составляет практически никакого труда.
-----------------------------------------------------------------------------
http://phpclub.ru/talk/showthread.php?postid=366785#post366785
В общем тебе туда - там всё сказано.
-----------------------------------------------------------------------------
Скажу попроще. Если за 10 копеек я могу избавить окружающих от 80% опасности, и за 20 рублей ото всех возможных, то почему решение за 10 копеек является неприемлемым, если у меня нет 20 рублей?
-----------------------------------------------------------------------------
Дай мне чёткую информацию - в скольки процентах случаев
эта защита не сработает? Это будет интересно. В одном из
тысячи? В одном из ста? В одном из десяти? Как ты это определишь? Какие твои аргументы, что это является вредной привычкой? Лучше не будет никакой защиты, чем она будет не 100%-я?
-----------------------------------------------------------------------------
 

ForJest

- свежая кровь
Фанат
Ну ты же умный человек. Посчитай, сколько нужно потратить времени, чтобы пропатчить этот форум через HTTP_REFERER, запихав проверку в Самый Главный Инклудник и сколько чтобы пропатчить (и заметь протестить) все формы? Если можно выкопать колодец, то почему от этого нужно отказваться в пользу того, что "водопровод гораздо лучше", если он всё равно даёт воду?
 

ForJest

- свежая кровь
Фанат
Да. Замечательно :) Но почему-то ему кажется что достаточно одного предложения, чтобы опровергнуть, всё что было сказано в этом трэде, а мне нужно писать четырёхкилобайтные посты, странно да? :)
И какой-нибудь ZaZa придёт, не прочитав трэд и в очередной раз скажет - херня этот ваш реф, правильно ONK говорит!
 

ForJest

- свежая кровь
neko
А придумывается и тестится это сколько? :) Ты посчитай формы на этом форуме, и подумай, сколько темплейтов и обработчиков формы нужно поправить... И это нужно будет сделать в _конкретных_ местах. Потом мы с тобой можем поговорить, о том, как это легко. Или попробуй убедить администрацию форума, что это нужно сделать :)
 

ForJest

- свежая кровь
ONK
Ткни мне в место, где я говорю, что нужно пользователей без рефера посылать? Желательно в слова и место в коде.
 

ForJest

- свежая кровь
Ах да, ONK ещё дай мне способ, который бы совместил убийство рефа и пост формы, хорошо :)? Для дальнейших моих исследований :)
 

ForJest

- свежая кровь
ONK
ONK, а сессионные куки в этом новом окошке сохраняются? Меня как понимаешь интересует практическое решение для данной задачи :)
 

ZaZa

Guest
Мда, чуть что - сразу ZaZa... Не понять мне тебя, ForJest, в одном месте (http://phpclub.ru/talk/showthread.php?postid=366785#post366785) у тебя это панацея, в другом (http://phpclub.ru/talk/showthread.php?postid=367171#post367171) уже соглашаешся, что это не совсем надёжно... Кста, я тред прочёл, ненадо, ладно. Просто, если кто то будет такое делать - он постарается и реферрер забить. Тут уже это сказали правда...
Просто вся твоя теория опирается на то, что мы на стороне сервера не можем предсказать, и быть уверенным в том, что именно эти даннные правильные - следовательно пологаться на них. И остаётся часть юзеров без реферрера - следовательно защита не столь действующая, как бы тебе этого не хотелось и уязвимость осталась.
Да, я согласен - переколбасить форум/портал или чё там ещё, причём чужой на эту тему - дорогое удовольствие, но если это требуется - придётся делать. А те кто выберут 10 копеечную защиту - пускай теряют клиентов/юзеров.
На эту тему можно спорить долго и каждый будет прав, безсмысленно дальше продолжать дискусию/спор. Ну закроешь ты взлом на 80% случаев - хорошо, но 20% где? Ты ведь сам предлагаешь решение, оставляя в нём дыру для хака.
 

ZaZa

Guest
ОК, ложите - потом интерестно будет посмотреть на вашу защиту по рефереру...
 

ForJest

- свежая кровь
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:

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