подлинность POST и GET

Absinthe

жожо
Redjik я думал, защита от него везде одинаково сделана :) В виде скрытого поля формы.
Сйчас посмотрю, как в Yii сделали.
 

Absinthe

жожо
Redjik уже успел прочитать по ссылке. Это самый очевидный и повсеместно применяемый вариант.

У меня назрел глупый вопрос: если я контролирую referer в POST-запросах, и разрешаю его только в вайтлистах на определенные действия (оплата paypal и прочие callback'и), как может быть проведена CSRF-атака?
 

Absinthe

жожо
Redjik ну естественно. А в обычных запросах реферер не совпадет, и я не вижу способа его подменить.
Но этот способ чем-то плох. Чем - я не понял, и это меня беспокоит.
 

Absinthe

жожо
Прочитал http://www.adambarth.com/papers/2008/barth-jackson-mitchell-b.pdf пункт 4.2, там говорится, что реферерная защита отлично справляется с CSRF, и не нужны никакие токены; подтвердились мои идеи.
Минусов не заметил (может быть какие-то самопальные неполноценные боты не пройдут, так как не знают, что такое реферер, но это скорее даже плюс)
 

KOLANICH

Новичок
KOLANICH почитай что-нибудь про csrf. Википедия подойдет.
всё ясно, csrf по определению не может читать то, что приходит с другого сайта, хотя в названии это не отражено почему-то
 

Ragazzo

TDD interested
KOLANICH
Cross-site request forgery все предельно понятно в названии.
Absinthe
А причин почему Реферер не используют не нашел?)
 

fixxxer

К.О.
Партнер клуба
Absinthe
Защиту по рефу надо реализовывать правильно: если parse_url не справился с парсингом, значит, надо разрешать. Иначе зарежешь пользователей фаерволов, которые режут реферер. В качестве примера см. "blocked" в http://nginx.org/ru/docs/http/ngx_http_referer_module.html.
 

Absinthe

жожо
Иначе зарежешь пользователей фаерволов, которые режут реферер.
Вот эта причина мной рассматривалась, как самый значительный потенциальный минус, но потом я подумал, что если человек влез своими кривыми руками в какой-нибудь NoScript и сам все испортил - то он д*лбоеб.
 

Yoskaldyr

"Спамер"
Партнер клуба
А как насчет того что многие старые браузеры глючат и иногда реферер не передают. Не говоря уже о корпоративных прокси.
Кстати еще один момент. Прокси наоборот может изменить реферер как ему надо и обойти защиту основанную на рефере.
 

Absinthe

жожо
А как насчет того что многие старые браузеры глючат и иногда реферер не передают.
Какие же?

Не говоря уже о корпоративных прокси.
Что не так с ними? Это надо специально внести изменения, чтобы резать реферер, то есть тут целенаправленное вредительство.

Прокси наоборот может изменить реферер как ему надо и обойти защиту основанную на рефере.
А еще можно отредактировать страницу и добавить XSS :D
 

Yoskaldyr

"Спамер"
Партнер клуба
Вы похоже плотно не работали с ajax-запросами, в плане полной кроссбраузерности.
А если конкретнее то старые версии IE и Оперы (у IE вообще можно было подменять реферер). Да сейчас это значительно менее актуально, но все-же. К тому же у той же оперы есть настройка не передавать реферер и в некторых сборках она включена по умолчанию. Подмену реферера можно сделать и со старыми версиями флеша.
Да и вообще погуглив насчет "Referrer spoofing" можно узнать много интересного и по идее должно пропасть желание использовать проверку реферера, в качестве надежного средства
 

Absinthe

жожо
(у IE вообще можно было подменять реферер)
Так только на свой хост же.

и в некторых сборках она включена по умолчанию
Хочу пруф.

Да и вообще погуглив насчет "Referrer spoofing" можно узнать много интересного и по идее должно пропасть желание использовать проверку реферера, в качестве надежного средства
Подменить свой реферер - не проблема, но пользы от этого никакой. Подменить у целевого пользователя, дав ему ссылку, и сделав от него запрос - проблема.
 

Yoskaldyr

"Спамер"
Партнер клуба
Так только на свой хост же.
Хочу пруф.
Я говорил о сборках оперы, а не об официальных инсталлах. В сборках настройки по умолчанию могут ой как отличаться. А в опере передача реферера - это настройка.
Так только на свой хост же.
Подменить свой реферер - не проблема, но пользы от этого никакой. Подменить у целевого пользователя, дав ему ссылку, и сделав от него запрос - проблема.
Я хотел сказать что передача рефера может не работать (прокси, кривой браузер или и то и другое вместе), а если не будет работать то не будет работать и функционал сайта, т.к. никак валидность проверить нельзя раз нет реферера.
Если это считается приемлемым - то ладно, сойдет и такой способ.
 

Вурдалак

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

Хотя учитывая второй пост с cURL, автор вряд ли имел в виду CSRF. IMHO, он даже и не догадывается о такой уязвимости.

P.S.
в yii очень хорошо CSRF защиту сделали
«В iOS очень хорошо разблокировку экрана сделали!» — примерно то же самое. Примитивнейшая вещь, о чем тут вообще можно говорить? Расскажите лучше как можно было бы умудриться сделать это «не очень хорошо», это было бы интереснее.
 
Сверху