Alexey Mishurovskiy
А кто как реализует CSRF у API (SPA)
Юра
Не надо делать просто авторизацию куками
Юра
Проверять реферер
Alexey Mishurovskiy
зачем?
ПРоблема. есть приложения SPA есть регистрация пользователей. любой мамкин хакер берет скрипт и в цикле запускает запросы по API на регистрацию. тем самым может натолкать хоть 15кк юзеров. Т.к. это регистрация, то соответственно нет возможности ее убрать в защищенную область под кредами
The Ant
что помешает хакеру добавить еще 1 запрос для получения токена?
Юра
CORS
The Ant
корс работает только в браузере :D
Юра
А spa не в браузере работают?
The Ant
ну так-то по апи можно долбится не тока со спашки. курлом например
Юра
Ну отправит и что
Юра
Он знает логин пароль?
Юра
Тогда ничего не помешает
The Ant
цсрф решит конечно проблему, но инчего не помешает ведь сначала получить токен, потом сделать запрос
Юра
Если токен в куке, тогда хакер может со своего сервера отправить запрос на апишку, кука автоматически полетит вместе с запросом
Юра
Ой
Юра
Не то
Юра
Хакер со своей страницы может отправить запрос на апишку
Юра
Можно проверять реферер я так понимаю чтобы исключить такой сценарий
Maksimus
Делай подтверждение регистрации - емейл или смс по телефону. Не подтвержденные аккаунты удалять через сутки например
Maksimus
Можно проверять реферер я так понимаю чтобы исключить такой сценарий
Реферер легко подделать + не всегда браузеры отправляют
Юра
Как ты подделаешь реферер если его браузер выставляет
Юра
Я не знаю какие браузеры не выставляют реферер
The Ant
Хакер со своей страницы может отправить запрос на апишку
хакер может проксировать на апишку со своего сервера, подделывая любые запросы
Юра
Как он получит доступ к куке?
Юра
Что молча?
The Ant
курл может запоминать куки если что
The Ant
делаешь запрос на свой сервер, свой сервер делает запрос на целевое апи, с кукми и реферами
Юра
Речь идет про csrf атаку
The Ant
так она легко обходится
Maksimus
молча
Если Кука httpOnly - через браузер не получит доступ
The Ant
чойто
Юра
Потому что кука привязана к домену
The Ant
я могу в запросе хост отправить :D
The Ant
и еще там 1 заголовок... не помню точно )
Maksimus
чойто
Уточни проблему - хочешь предотвратить кучу фальшивых регистраций?
Maksimus
Или защита авторизованных юзеров?
The Ant
Уточни проблему - хочешь предотвратить кучу фальшивых регистраций?
это не моя проблема, но да. У чела именно эта проблема. И корс с цсрф её не решат никак.
Юра
Можно просто не хранить токен в куке чтоюы исключить такие проблемы
Maksimus
Тогда только подтверждение регистраций - емейл, смс - не подтвержденные аккаунты удалять
The Ant
ну и ratelimiter высталять для ипа, юзерагента
Maksimus
+ добавьте в форму регистрации Гугл капчу - снизите кол-во
Maksimus
ну и ratelimiter высталять для ипа, юзерагента
Это уже ддос) хорошую капчу добавьте + защиту от множества запросов раз так атакуют
Алексей Анатольевич
В куки никто не хранит важные для безопасности данные, нарушая это правило, вы сами себе создаёте проблемы на ровном месте. Используйте средства api и https
Alexander
Cors совсем не про это
Katulos
Fail2ban на сервере забанит мамкиного хакера за секунду.
А вы видимо не юзали fail2ban на сервере, нигде кроме подкроватного сервера?
Katulos
Или виртуалки на локалхосте
Alexander
А вы видимо не юзали fail2ban на сервере, нигде кроме подкроватного сервера?
А вы видимо в лесу выросли, поэтому не вижу смысла вам отвечать.
Katulos
Да я то как раз юзал fail2ban достаточно, чтобы больше не совершать этой ошибки
Katulos
Вижу у вас там "хайдоад" в анкете, а почему то про fail2ban пишете 😁
Alexander
Потому что речь про мамкиного хакера, а от него достаточно феилтубана
Alexander
Подкраватный сервер работает и не шуршит, перебанил полторы тысячи айпи за 5 минут. Про хайлоад тут вопросов не было. Если у вас с каким-то инстурментом случился неудачный опыт, это не повод бегать по интернету и приставать к людям с глупыми вопросами.
slo_nik
Добрый вечер. Подскажите, как решить проблему? Обновил проект symfony 5.3.9 Появилась ошибка Attempted to call an undefined method named "fetchColumn" of class "Doctrine\DBAL\Result". Ругается на knp-components, вот на эту строку https://github.com/KnpLabs/knp-components/blob/f06a6ebea71a91c8cd34213f9417004062133627/src/Knp/Component/Pager/Event/Subscriber/Paginate/Doctrine/DBALQueryBuilderSubscriber.php#L41
Юра
Он вроде давно висит в депрекейтед
Юра
Если баг не у тебя то пиши ишью и отказывайся назад либо сделай форк и поправь
slo_nik
Именно в нём идёт обращение к несуществующему методу
Юра
Значит баг бадла что он зависит от версии симфы с которой не работает
Alexey Mishurovskiy
https://symfony.com/doc/current/rate_limiter.html кто то юзал?
slo_nik
Значит баг бадла что он зависит от версии симфы с которой не работает
doctrine/dbal обновился до 3.1, откатил до 2.13 и всё заработало. Только вот теперь бы понять с какого перепугу dbal обновился?
slo_nik
Значит баг бадла что он зависит от версии симфы с которой не работает
Версии пакетов, от которых он зависит совпадают в двух проектах. Что вызвало обновление, как понять?
Юра
Симфа?
slo_nik
composer why doctrine/dbal
Это я сделал, но всё равно не понятно, как выбирается пакет. Выдача в консоли doctrine/doctrine-bundle 2.4.3 requires doctrine/dbal (^2.9.0|^3.0) doctrine/migrations 3.3.0 requires doctrine/dbal (^2.11 || ^3.0) doctrine/orm 2.10.1 requires doctrine/dbal (^2.13.1 || ^3.1.1) symfony/cache v5.3.8 conflicts doctrine/dbal (<2.10) symfony/doctrine-bridge v5.3.8 conflicts doctrine/dbal (<2.10) Последние два пакета не требуют dbal > 2.10, в проекте эти пакеты установлены, но всё равно dbal обновился до 3.1.1
Юра
Вопрос почему кмп бандл указал не поддерживаемую версию
Юра
Оно должно было ругнуться что не может обновить
Dmitry
Всё это вызвало проблему в knp pagination.
Можете пока сделать: composer require -W doctrine/dbal:'2.*' и вернётся вторая версия.
slo_nik
Можете пока сделать: composer require -W doctrine/dbal:'2.*' и вернётся вторая версия.
Я пока сделал composer req doctrine/dbal:"^2.0", вернулась старая версия, всё заработало.
slo_nik
Можете пока сделать: composer require -W doctrine/dbal:'2.*' и вернётся вторая версия.
И получилось так, я удалил knp_pagination, потом заново поставил и предупреждения о несовместимости в docrtine/orm 3.1 не получил.
Alexey Mishurovskiy
может просто не пользоваться KNP? )
Юра
У доктрины есть свой пагинатор
Юра
Я его юзаю