Pull to refresh
-5
0
Vladimir Gamaley @GamaleyVV

Пользователь

Send message

CORS — это тупо

Reading time7 min
Views20K

Технология CORS и действующее в браузерах правило ограничения домена – те вещи, которые часто понимаются превратно. Ниже я объясню, что они собой представляют, и почему пора перестать волноваться по их поводу.

Замечание: я собираюсь рассказать о CORS и правиле ограничения домена как о единой сущности, поэтому далее часто буду употреблять эти термины как синонимы. Дело в том, что они, по сути – части одной системы, работают в сочетании друг с другом и помогают вам решать, что можно сделать с какими ресурсами смешанного происхождения. В принципе, если ваши запросы поступают из разных источников, то вам придётся иметь дело с правилами, политиками и механизмами CORS.

Прежде всего, отмечу, что CORS — это огромный костыль, помогающий снизить влияние ошибок, передающихся с унаследованным кодом. В этой системе защита предоставляется как по принципу отказа от участия (opt-out) в попытке частично купировать XSRF-атаки против незащищённых или немодифицированных сайтов, так и по принципу активного участия (opt-in), чтобы на сайте включалась активная самозащита. Но ни одной из этих мер не достаточно, чтобы решить целенаправленно созданную проблему. Если на вашем сайте используются куки, то вы обязаны деятельно позаботиться о его безопасности. (Ладно, это касается не любого сайта, но лучше перестрахуйтесь. Выделите время на тщательный аудит вашего сайта или выполните описанные ниже простые шаги. Даже придерживаясь самых разумных паттернов, вы всё равно можете подставиться под XSRF-уязвимости).

Читать далее
Total votes 16: ↑11 and ↓5+11
Comments18

Бесполезность dd

Level of difficultyEasy
Reading time4 min
Views13K

tl;dr: dd умеет читать и записывать диски, но не обладает какими-либо "низкоуровневыми возможностями работы с вводом-выводом", делающими его использование более предпочтительным в сравнении с другими утилитами командной строки. Подобно cat, вы должны использовать её там, где это имеет смысл, например, чтобы воспользоваться широким спектром опций, а не стараться из страха и суеверия убеждать себя, что все относящиеся к диску команды начинаются и заканчиваются dd.

Читать далее
Total votes 21: ↑11 and ↓10+8
Comments27

Kotlin глазами Java-разработчика

Level of difficultyEasy
Reading time6 min
Views9.9K

Привет, хабр! Сегодня я хочу рассказать про свой опыт взаимодействия с языком kotlin.

Представлюсь – я java разработчик, работаю крупном банке, создаю (и поддерживаю существующие) микросервисы.

Небольшая ремарка: я не собираюсь становиться Android разработчиком, ни сейчас, ни в будущем, поэтому, когда я заинтересовался новым языком, не принимал в расчет аргументы про различные удобства мобильной разработки на нем, и руководствовался только удобством языка в целом для бэкэнда.

Итак, почему я решил изучить kotlin. Ну, во-первых, прожужали все уши, мол сокращение объема код, лаконичность, читаемость и сахар.

Читать далее
Total votes 19: ↑16 and ↓3+15
Comments42

Еще один способ передачи данных по радиоканалу

Level of difficultyMedium
Reading time12 min
Views16K

Эта статья написана по мотивам вот этой. Чтобы повторить успех к имеющейся Baofeng uv-5r была приобретена Quansheng uv-k5, а потом и ещё одна uv-k5, потому что uv-5r очень долго активировал функцию VOX. Кейс очень интересный, но практически использовать его тяжеловато из-за низкой скорости передачи. Ниже описана попытка избавиться от этого недостатка.

Читать далее
Total votes 17: ↑17 and ↓0+25
Comments26

VLESS vs ShadowSocks. Рассказываем про протокол, который придет на смену SS

Level of difficultyEasy
Reading time2 min
Views45K

Если вы когда-нибудь искали бесплатные outline-ключи, то вам будет полезно узнать про VLESS — новый протокол, который постепенно приходит на смену Shadowsocks. Поговорим о том, чем они отличаются и какие у них есть преимущества.

Читать далее
Total votes 46: ↑31 and ↓15+23
Comments54

Kotlin Coroutines. От А до Я

Level of difficultyEasy
Reading time28 min
Views12K

Полный разбор корутинного мира с нуля, который может послужить отличной шпаргалкой на собеседовании!
Разберем разницу между многопоточностью и асинхронностью; раскроем все основные понятия корутин, параллельно ссылаясь на исходники kotlinx.coroutines; посмотрим их применение на практике и в конце напишем свой собственный CoroutineScope.

Let's go
Total votes 19: ↑19 and ↓0+23
Comments11

Даты в Javascript наконец-то пофиксят

Level of difficultyEasy
Reading time7 min
Views17K

В чём состоит проблема​

Из всех последних изменений, которые будут внедрены в ECMAScript, моим любимым с большим отрывом от остальных стало предложение Temporal. Это предложение очень прогрессивное, мы уже можем воспользоваться этим API при помощи полифила, разработанного командой FullCalendar.

Этот API настолько невероятен, что я, наверно, посвящу несколько постов описанию его основных возможностей. Однако в первом посте я расскажу об одном из его главных преимуществ: у нас наконец появился нативный объект, описывающий Zoned Date Time.

Но что же такое Zoned Date Time?

Читать далее
Total votes 27: ↑24 and ↓3+32
Comments56

Hono.js: Легкий Путь к Эффективным API

Level of difficultyMedium
Reading time5 min
Views5.2K

Когда речь идет о разработке простого бэкенда, то в голову приходит Express.js. Однако в 2024 году он считается устаревшим, так как есть шустрые альтернативы. Приветствую вас, дорогие читатели и сегодня расскажу о Hono.js.

Читать далее
Total votes 12: ↑11 and ↓1+16
Comments12

Новый фронтенд-фреймворк?

Reading time4 min
Views12K

В этой статье я расскажу о том, как разрабатывать веб-компоненты с использованием библиотеки Fusor и преимуществах данного подхода.

Такие компоненты можно будет затем собирать в полноценные веб-приложения, сопоставимые с теми, что созданы с использованием React, Angular, Vue, Solid, Svelte и т.д.

Читать далее
Total votes 8: ↑7 and ↓1+12
Comments38

Распределенные транзакции для самых маленьких

Level of difficultyEasy
Reading time8 min
Views12K

В этой статье рассказываем про распределенные транзакции - зачем они нужны в микросервисной архитектуре и какие у нас есть варианты реализации. Рассказ ориентирован на тех, кто не в теме - кому непонятно, зачем на простую транзакцию накручивать столько сложностей, это ведь удлиняет разработку и увеличивает количество точек отказа. Поясним зачем это нужно, приведем примеры проектов и немного пофилософствуем.

Читать далее
Total votes 18: ↑14 and ↓4+15
Comments10

Как поменять местами клиент и сервер

Level of difficultyEasy
Reading time3 min
Views5.9K

Ситуация: у нас есть сервер и нам нужно подключиться к нему с помощью клиента. Но вот незадача: мы почему‑то не можем инициировать сессию с клиента. Это может быть по причине NAT, настроек VPN‑клиента или просто из‑за ACL на МЭ.

Что делать?

Давайте попробуем поменять местами клиент и сервер.

Читать далее
Total votes 4: ↑4 and ↓0+9
Comments9

Гибкие шестерни

Level of difficultyMedium
Reading time9 min
Views16K
Картинка Jahobr, Youtube-канал «3DprintedLife»

В робототехнических проектах зачастую требуется использование разнообразных редукторов и передач. Слабым местом таких конструкций остаётся их относительная громоздкость и, соответственно, дороговизна.

В этой статье мы поговорим о том, как можно решить этот вопрос наиболее простым способом.
Читать дальше →
Total votes 64: ↑62 and ↓2+88
Comments42

MinIo и Boto3: маленький гайд по созданию скрипта для объектного хранилища на python

Level of difficultyEasy
Reading time5 min
Views3.1K

MinIo, как система объектного хранилища данных, заслуженно пользуется любовью разработчиков: инструмент приятный и, довольно, простой в использовании и освоении. Вот и для одного из наших крупных проектов на работе недавно возникла потребность в использовании S3 хранилища, мы, однако, по корпоративным соображениям выбрали для применения в продакшене другой инструмент, а именно - IONOS (компания у нас немецкая и на ионосе много еще чего завязано), но для тестов и для локального запуска скриптов ничего лучше MinIo в голову нам не пришло. Подобное сочетание при этом вызвало необходимость в использовании такой Python библиотеки, которая могла бы работать и "на наших, и на ваших", а в нашем случае и на MinIo, и на IONOS (поменял параметры в конфиге и тот же самый код, что работал локально, начинает работать и с продакшеном) и этой библиотекой стал Boto3 (стандартный пакет minio для этих целей не подходил). Именно об этой констелляции - Python, MinIo и Boto3 - дальше мне и хотелось бы рассказать, ну а если вместо MinIo вы захотите использовать что-то другое, то "поменял параметры в конфиге и тот же самый код, что работал локально, начинает работать и с продакшеном".

Читать далее
Total votes 7: ↑6 and ↓1+7
Comments3

Раскуриваем Golden Ticket и смотрим артефакты

Level of difficultyMedium
Reading time4 min
Views1.9K

🔥 Атака Golden Ticket позволяет злоумышленнику выпустить золотой билет Kerberos (TGT) с помощью секретного ключа (хэш) сервисной учетной записи KRBTGT. Данная техника позволяет максимально скрыть следы своего присутствия, поскольку для инфраструктуры злоумышленник будет казаться легитимным пользователем, но без фактической аутентификации и с желаемыми правами.

В данной статье разберем атаку на практике и научимся ее детектить по артефактам...

Читать далее
Total votes 5: ↑3 and ↓2+3
Comments0

26 к 1: легендарная серия в Монте-Карло и рождение «ошибки игрока»

Level of difficultyEasy
Reading time5 min
Views5.6K

История "ошибки игрока" неразрывно связана со знаменитым случаем, произошедшим в казино Монте-Карло 18 августа 1913 года.

Представьте себе эту сцену: переполненное казино, напряженная атмосфера за столом рулетки. После того, как черное выпало 10 раз подряд, среди игроков начинается настоящее безумие. Все вдруг решают, что теперь-то точно должно выпасть красное, и начинают массово ставить на этот цвет. Но черная полоса продолжается - 11, 12, 13 раз подряд... С каждым новым выпадением черного ставки на красное становятся все больше и отчаяннее.

В итоге эта удивительная серия достигла 26 подряд выпадений черного. Вероятность такого события крайне мала - примерно 1 к 136,8 миллионам. Однако игроки, поддавшись "ошибке игрока", продолжали верить, что вот-вот должно выпасть красное. В результате казино смогло заработать за эту ночь несколько миллионов франков.

Читать далее
Total votes 18: ↑14 and ↓4+17
Comments49

Перевод статьи «Injecting Java in-memory payloads for post-exploitation»

Level of difficultyMedium
Reading time35 min
Views858

В марте Synacktiv описали способы эксплуатации небезопасной десериализации в приложениях, написанных на Java. Позже, команда красных автора столкнулась с Java-приложениями, в которых были обнаружены другие уязвимости, приводящие к исполнению кода. А уже в этой статье автор представил несколько приемов, которые использовались для внедрения полезной нагрузки в память на примере широко известных приложений.

Ну а мы, авторы telegram-канала AUTHORITY, перевели эту статью на русский.

Читать далее
Total votes 2: ↑1 and ↓10
Comments0

FPC/Lazarus и Android

Level of difficultyMedium
Reading time8 min
Views6.2K

Всем привет, кто не знает меня зовут Сергей! И в очередной статье я задену разработку на Object Pascal.

В настоящее время и Delphi и FPC/Lazarus (FPC - free pascal compiler, Lazarus - IDE) поддерживают сборку под разные платформы.

В данной статье ознакомлю вас с возможностями разработки Android-приложений средствами FPC/Lazarus, в том числе и игр. И так же немного добавлю информации по Delphi, чтоб проще было искать нужную вам информацию, если вы используете данную среду разработки, но по самой разработке в Delphi не смогу вам ни чего дать на данный момент.

интересно
Total votes 35: ↑33 and ↓2+39
Comments30

Google Index API + Yandex IndexNow Protocol: Примеры на Python

Level of difficultyEasy
Reading time2 min
Views938

Для ускорения индексации существуют разные инструменты, помимо дефолтного sitemap.xml, можно добавить автоматическую отправку новой ссылки в поисковые системы, в этой статье мы рассмотрим два примера: Google Index API и Yandex IndexNow

В Гугле, в отличии от Bing и Yandex нет протокола IndexNow, поэтому организовать отправку новых страниц немного сложнее, для этого понадобится следующее:
Создаем новый проект в Гугл Клауд: https://console.cloud.google.com/projectcreate

Читать далее
Total votes 2: ↑1 and ↓1+2
Comments2

Playwright: Поиск, фильтрация и ожидание элементов на странице

Level of difficultyEasy
Reading time14 min
Views2.4K

Друзья, приветствую! Для тех, кто не в теме, Playwright — это инструмент для автоматизации и тестирования веб-приложений, который, по моему мнению, уже обошел своего предшественника Selenium, долгое время лидировавшего в автоматизации и тестировании браузеров.

О том, почему Playwright лучше Selenium и зачем вам стоит перейти на Playwright, я подробно писал в предыдущей статье. Там же, хотя и поверхностно, я затронул тему поиска и ожидания элементов на странице.

Однако оказалось, что этот разбор был недостаточно детальным, и у многих читателей возникли вопросы о целесообразности использования таких методов, как locator и get_by_role. В связи с этим, а также благодаря положительному отклику на прошлую статью, я решил максимально подробно разобрать тему поиска, фильтрации и ожидания элементов на странице.

Чем мы займемся сегодня?

В рамках этой статьи мы рассмотрим основные методы для поиска, фильтрации и ожидания элементов на странице.

Читать далее
Total votes 15: ↑11 and ↓4+7
Comments7

Сетевые плагины (CNI) в Kubernetes

Level of difficultyHard
Reading time14 min
Views5.4K

Сеть Kubernetes — это сложная и увлекательная тема, наполненная множеством подвижных частей. Одним из ключевых компонентов, обеспечивающих сетевую связность и взаимодействие различных элементов кластера, является CNI (Container Networking Interface).

CNI  - это спецификация, разработанная CNCF (Cloud Native Computing Foundation) для стандартизации процесса подключения сетевых интерфейсов к контейнерам. CNI обеспечивает гибкость и адаптивность сетевой инфраструктуры, позволяя интегрировать различные сетевые решения в Kubernetes.

Давайте подробнее разберем, что такое Container Network Interface?

Читать далее
Total votes 19: ↑17 and ↓2+18
Comments2
1
23 ...

Information

Rating
5,560-th
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity