Вопросы и ответы по программированию.

Для тех, кто хочет сделать мир лучше.
Сообщение
Автор
MOZGIII
Разработчик
Разработчик
Сообщения: 910
Зарегистрирован: 09.01.2009
Откуда: Переезжаю в /dev/null
Благодарил (а): 7 раз
Поблагодарили: 65 раз
Контактная информация:

#226 Сообщение 04.07.2012, 17:00

Редирект по реферреру или полю из гета или поста, в случае, если форма не защищена от форджери, создаёт уязвимость для фишинга.

Аватара пользователя
GanGSISoft
Полковник
Полковник
Сообщения: 1430
Зарегистрирован: 27.03.2008
Откуда: Бацькаўшчына
Благодарил (а): 2 раза
Поблагодарили: 3 раза
Контактная информация:

#227 Сообщение 04.07.2012, 20:26

MOZGIII
Можно подробнее?, а то я не понял. И что такое "форджери"?

Аватара пользователя
NiGHt-LEshiY
Полковник
Полковник
Сообщения: 10258
Зарегистрирован: 13.06.2008
Откуда: Россия
Благодарил (а): 752 раза
Поблагодарили: 2667 раз
Контактная информация:

#228 Сообщение 04.07.2012, 20:47

GanGSISoft
Это значит, что он знает крутые слова.
Кодекс поведения участников сообщества — обязательно к прочтению.
Просьба присылать сообщения об ошибках в ЛС.

MOZGIII
Разработчик
Разработчик
Сообщения: 910
Зарегистрирован: 09.01.2009
Откуда: Переезжаю в /dev/null
Благодарил (а): 7 раз
Поблагодарили: 65 раз
Контактная информация:

#229 Сообщение 05.07.2012, 01:20

GanGSISoft
NiGHt-LEshiY
http://en.wikipedia.org/wiki/Cross-site_request_forgery или http://ru.wikipedia.org/wiki/%D0%9F%D0% ... 0%BE%D0%B2

Добавлено спустя 2 минуты 34 секунды:
В русской статье описаны варианты защиты, так вот первый уже не актуален.

Добавлено спустя 17 минут 4 секунды:
Суть проста: редирект на страницу, которая задаётся на клиентской стороне (путём указания ссылки как параметра запроса или использование реферрера) создаёт уязвимость XSS, который можно эксплуатировать для перенаправления клиента на фишинговый сайт.

Если сайт ещё и уязвим к CSRF (то самое форджери) и при этом для перенаправления используется параметры запроса, то эксплуатацию уязвимости можно провести немного легче.

Мораль: храните цель редиректа в сессии.

Аватара пользователя
NiGHt-LEshiY
Полковник
Полковник
Сообщения: 10258
Зарегистрирован: 13.06.2008
Откуда: Россия
Благодарил (а): 752 раза
Поблагодарили: 2667 раз
Контактная информация:

#230 Сообщение 05.07.2012, 01:38

форджери
По-русски говори, бл.
Мораль:
Это не мораль, а руководство к действию. Мораль была бы "нельзя полагаться на данные от пользователя".
И ты совсем неправильно понял, что планируется делать с этими данными. Кто сказал, что будет редирект на тот адрес, что пришёл от юзера? Адрес из формы будет _использоваться_.
Кодекс поведения участников сообщества — обязательно к прочтению.
Просьба присылать сообщения об ошибках в ЛС.

Аватара пользователя
Overseer618
Overseer
Overseer
Сообщения: 272
Зарегистрирован: 06.05.2010
Откуда: Екатеринбург
Контактная информация:

#231 Сообщение 05.07.2012, 07:39

Мораль - используйте POST и ключи сессии.
Изображение
Изображение

Аватара пользователя
Pr0Ger
Модератор
Модератор
Сообщения: 1829
Зарегистрирован: 16.01.2009
Благодарил (а): 17 раз
Поблагодарили: 214 раз
Контактная информация:

#232 Сообщение 05.07.2012, 11:40

MOZGIII
как минимум, можно хранить не абсолютный url; а можно просто хранить идентификатор страницы, которое твоей логикой уже развернется в полный url, например t25425 -> /viewtopic.php?t=25425

а против CSRF надо проверять реферер или делать скрытые уникальные поля в форме

MOZGIII
Разработчик
Разработчик
Сообщения: 910
Зарегистрирован: 09.01.2009
Откуда: Переезжаю в /dev/null
Благодарил (а): 7 раз
Поблагодарили: 65 раз
Контактная информация:

#233 Сообщение 05.07.2012, 16:00

Pr0Ger
Я же говорил что первый способ из вики не надёжен - реферер сейчас спокойно подменяется средствами js.
Overseer618 писал(а):Мораль - используйте POST и ключи сессии.
Вот этот способ с достаточной уверенностью спасает от CSRF. Но лучше, для полного счастья, добавлять ещё какую-нибудь авторскую магию.
Pr0Ger писал(а):как минимум, можно хранить не абсолютный url; а можно просто хранить идентификатор страницы, которое твоей логикой уже развернется в полный url, например t25425 -> /viewtopic.php?t=25425
Это неплохо поможет защититься от XSS, но в рамках одного сайта редирект куда не надо всё равно возможен, эффективнее всего использовать именно сессию (т.к. пользователь или взломщик вообще не может её изменить, хотя есть атаки направленные на похищение сессии, но это из другой оперы).
NiGHt-LEshiY писал(а):И ты совсем неправильно понял, что планируется делать с этими данными. Кто сказал, что будет редирект на тот адрес, что пришёл от юзера? Адрес из формы будет _использоваться_.
Не важно. Суть та-же.
NiGHt-LEshiY писал(а):Это не мораль, а руководство к действию. Мораль была бы "нельзя полагаться на данные от пользователя".
Я специально выдал мораль в такой форме. Думаю, причина, почему я так сделал, ясна.

Аватара пользователя
Rama
Модератор
Модератор
Сообщения: 1143
Зарегистрирован: 28.03.2008
Благодарил (а): 389 раз
Поблагодарили: 240 раз
Контактная информация:

#234 Сообщение 05.07.2012, 16:07

Презентация чутка в тему. http://yadisk.cc/d/X1ly0pojY7H
Не помню откуда брал, может даже отсюда %)

Аватара пользователя
Pr0Ger
Модератор
Модератор
Сообщения: 1829
Зарегистрирован: 16.01.2009
Благодарил (а): 17 раз
Поблагодарили: 214 раз
Контактная информация:

#235 Сообщение 05.07.2012, 16:38

MOZGIII писал(а):реферер сейчас спокойно подменяется средствами js
кажется я что-то проспал, хочу линк
по крайней мере не очень давно видел вот этот коммент говорящий об обратном
если что именно чистым JavaScript, без примесей флеша и тем более какой-нибудь жавы
да, я поискал, нашел какую-то штуку, которая пробивает древний файрфокс и только GET запросы
MOZGIII писал(а):но в рамках одного сайта редирект куда не надо всё равно возможен, эффективнее всего использовать именно сессию
но данные, которые ты туда положишь все равно в какой-то момент получаются от пользователя, и могут быть подменены

хотя такими размышлениями можно дойти как в той притче про хакера и солонку

Аватара пользователя
NiGHt-LEshiY
Полковник
Полковник
Сообщения: 10258
Зарегистрирован: 13.06.2008
Откуда: Россия
Благодарил (а): 752 раза
Поблагодарили: 2667 раз
Контактная информация:

#236 Сообщение 05.07.2012, 20:47

MOZGIII писал(а):Не важно. Суть та-же.
Да нет, ещё как важно. Ты сам выдумал проблему и написал целый пост по поводу решения выдуманной проблемы. Этого бы не случилось, если б ты правильно понял пост Pr0Ger.
Я специально выдал мораль в такой форме. Думаю, причина, почему я так сделал, ясна.
Я не могу понять причину, правда. Какая может быть причина, чтобы выдать за мораль что-то, что моралью быть не может?
Кодекс поведения участников сообщества — обязательно к прочтению.
Просьба присылать сообщения об ошибках в ЛС.

Аватара пользователя
Overseer618
Overseer
Overseer
Сообщения: 272
Зарегистрирован: 06.05.2010
Откуда: Екатеринбург
Контактная информация:

#237 Сообщение 05.07.2012, 20:57

Вы уже обсудили данную тему, зачем устраивать холивары?
Изображение
Изображение

MOZGIII
Разработчик
Разработчик
Сообщения: 910
Зарегистрирован: 09.01.2009
Откуда: Переезжаю в /dev/null
Благодарил (а): 7 раз
Поблагодарили: 65 раз
Контактная информация:

#238 Сообщение 06.07.2012, 09:43

Overseer618
Just for fun %) Разговор тут уже давно не конструктивен...

Добавлено спустя 3 минуты 17 секунд:
NiGHt-LEshiY писал(а):
MOZGIII писал(а):Не важно. Суть та-же.
Да нет, ещё как важно. Ты сам выдумал проблему и написал целый пост по поводу решения выдуманной проблемы. Этого бы не случилось, если б ты правильно понял пост Pr0Ger.
WTF?

Добавлено спустя 1 минуту 5 секунд:
NiGHt-LEshiY писал(а):Я не могу понять причину, правда. Какая может быть причина, чтобы выдать за мораль что-то, что моралью быть не может?
Думай xD

Добавлено спустя 8 минут 36 секунд:
Pr0Ger
По поводу js - я тоже поискал, действительно, ничего не находится... Я давно изучал этот вопрос, и, если честно, уже и не помню, почему я решил, что проверять реферрер - это плохо. Может быть дело было в моей конкретной задаче.
Вообще говоря, уязвимость при возможности CSRF порождается далеко не всегда. Это так, скорее варнинг, на который можно иногда обращать внимание.

Аватара пользователя
NiGHt-LEshiY
Полковник
Полковник
Сообщения: 10258
Зарегистрирован: 13.06.2008
Откуда: Россия
Благодарил (а): 752 раза
Поблагодарили: 2667 раз
Контактная информация:

#239 Сообщение 06.07.2012, 09:58

MOZGIII
Отмазался.
Кодекс поведения участников сообщества — обязательно к прочтению.
Просьба присылать сообщения об ошибках в ЛС.

Аватара пользователя
GanGSISoft
Полковник
Полковник
Сообщения: 1430
Зарегистрирован: 27.03.2008
Откуда: Бацькаўшчына
Благодарил (а): 2 раза
Поблагодарили: 3 раза
Контактная информация:

#240 Сообщение 10.07.2012, 12:20

1)У меня в файле _smarty.php объявлена переменная $srv_path, если я подключаю куда-то этот файл, и использую эту переменную, то netbeans выдаёт предупреждения, мол нету такой переменной, я правильно делаю(оно то всё работает)? и как избавится от предупреждения?
2)А вот ещё, если сделать так

Код: Выделить всё

$var="ssadsad";
$var = strip_tags($var);
$var=  htmlentities($var);
echo $var;
то опять netbeans ругается, требует так

Код: Выделить всё

$var="ssadsad";
$var1 = strip_tags($var);
$var2=  htmlentities($var1);
echo $var2;
Это нормально?
3)И ещё, почему оно ругается на второе и третье упоминани $msg в этом коде

Код: Выделить всё

$msg = "сбой";
if(условие1){
  if (улсовие2)
      $msg = "Активация прошла успешно";
  else
      $msg = "Активировать профиль не удалось";
}
echo $msg;
Я не пойму, или я не правильно делаю, или это NetBeans не прав.
Последний раз редактировалось GanGSISoft 10.07.2012, 20:52, всего редактировалось 1 раз.

Ответить Вложения 1