• Частное расследование SEO бага на сайте Монобанка


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

    И эта история так и осталась бы интересной лишь узкому кругу практикующих сеошников, не коснись она одной недокументированной особенности индексации, о которой наверняка захотелось бы узнать и прочим специалистам по обслуживанию сайта. Приглашаю их под кат.
    Читать дальше →
  • Slack закрыл уязвимость с «массовым захватом аккаунтов через контрабанду HTTP-запросов»



      Техника атаки HTTP Request Smuggling (контрабанда вредоносных HTTP-запросов на бэкенд в результате рассинхронизации фронтенд- и бэкенд-серверов) известна 15 лет, хотя в прошлом году Джеймс Кеттл рассказал о новых методах, c помощью которых заработал на bugbounty около $70 000. Судя по всему, атака эффективна и сейчас, причём уязвимы многие.

      12 марта 2020 года на портале HackerOne рассекретили описание уязвимости Slack, которую закрыли 13 февраля. Оказывается, до этого времени сессионные куки пользователей Slack были доступны для массового перехвата. Описание взлома Slack довольно подробное, поэтому заслуживает внимания. Похоже, что эту технику можно использовать для взлома других сервисов, которые работают за прокси (AWS ALB, nginx, haproxy до 2.0.6 и прочие).
      Читать дальше →
    • Instagram api на минималках

      image

      Все началось с того, что я захотел сделать канал в инстаграме потратив на поиски и тесты сервисов авто публикаций целый день, далее я решил посмотреть на готовые пакеты гитхаба я удивился на размер кода этих пакетов (некоторые фреймворки php меньше чем эти обертки над инстаграмом), я плюнул и решил написать свою обертку с минимальными возможностями.
      Читать дальше →
    • Рекомендации по REST API — примеры проектирования веб-сервисов на Java и Spring

      • Translation
      • Tutorial
      Это последняя статья из серии статей про REST API:


      В этой статье вы познакомитесь с рекомендациями по REST API и с примерами разработки из Java и Spring Web Services.

      При разработке хорошего REST API важно иметь хорошие микросервисы.
      Как вы разрабатываете свой REST API? Каковы лучшие практики?


      Читать дальше →
      • +10
      • 23.5k
      • 1
    • 5 способов полезного использования Raspberry Pi. Часть вторая

        Привет, Хабр.

        В первой части были рассмотрены 5 способов использования Raspberry Pi. Тема оказалась достаточно интересной, и сегодня я рассмотрю еще несколько вариантов того, как можно с пользой использовать этот микрокомпьютер.


        Фото с сайта learn.adafruit.com

        Как и в предыдущей части, я рассмотрю те способы, которые не требуют программирования.
        Для тех кому интересно, продолжение под катом.
        Читать дальше →
      • Разбор задач Одноклассников на Joker 2019



          С 28 по 29 октября в Санкт-Петербурге проходила Joker 2019 – самая большая и хардкорная на просторах России конференция, посвященная Java-разработке. Мероприятие проходило в седьмой раз и как всегда побило рекорд по посещаемости, в этот раз мероприятие привлекло более 2000 специалистов.

          Одноклассники традиционно принимают участие в Joker в качестве партнеров мероприятия. В этом году на нашем стенде можно было попробовать справиться со знаменитыми «нерешаемыми» задачами от ведущих инженеров OK.RU. Участники конференции, правильно ответившие на вопросы, получили призы.

          Справедливости ради надо сказать, что из 1 000 листочков с задачами, которые мы раздали, обратно было получено менее 100. Лучшим оказалось решение, набравшее 4.5 балла из 5 возможных.

          Мы публикуем задачи и их решения, чтобы вы смогли проверить свои силы.
          Читать дальше →
          • +32
          • 8.8k
          • 7
        • Заворачиваем весь трафик локальной сети в vpn без ограничения скорости


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

            Для этой цели можно просто настроить VPN-клиент на шлюзе, если это позволяет роутер. Но такое решение черевато последствиями в виде уменьшения скорости работы Интернета, повышенной нагрузки на роутер, к тому же некоторые клиенты отправляют весь трафик через основное соединение сразу же в случае отключения от VPN. Не стоит забывать, что даже ведущие VPN-провайдеры не могут обеспечить 100% аптайм своих серверов.

            Итак, каковы наши цели:

            • пропускать через VPN весь без исключения исходящий трафик
            • делать это с максимально возможной скоростью
            • не зависеть от временных неполадок VPN-провайдера
            • максимум анонимности в Интернете
            Читать дальше →
          • Настройка валидации DTO в Spring Framework

              Всем привет! Сегодня мы коснёмся валидации данных, входящих через Data Transfer Object (DTO), настроим аннотации и видимости — так, чтобы получать и отдавать только то, что нам нужно.

              Итак, у нас есть DTO-класс UserDto, с соответствующими полями:

              public class UserDto {
              
                  private Long id;
                  private String name;
                  private String login;
                  private String password;
                  private String email;
              }

              Я опускаю конструкторы и геттеры-сеттеры — уверен, вы умеете их создавать, а увеличивать в 3-4 раза код смысла не вижу — представим, что они уже есть.

              Мы будем принимать DTO через контроллер с CRUD-методами. Опять же, я не буду писать все методы CRUD — для чистоты эксперимента нам хватит пары. Пусть это будут create и updateName.
              Читать дальше →
            • Blue-Green Deployment приложений на Spring c веб-сервером Nginx

              • Translation

              image


              Прим. перев. — Этой статьёй мы начинаем цикл переводов, посвященных теме Zero Downtime Deployment. Следующие публикации осветят вопросы деплоя новых версий приложения с БД и деплой в Kubernetes.


              Несмотря на то, что техническое решение, описываемое ниже достаточно спорно, целью данной статьи является знакомство читателя непосредственно с подходом Blue-Green деплоя, который, кстати, применим не только к приложениям Spring.


              Целью Blue-Green деплоя является устранение простоев во время развертывания новой версии приложения.


              Простой связан с недоступностью серверов, когда новая версия приложения устанавливается для замены старой. Идея Blue / Green deployment заключается в развертывании новой версии приложения в некоем отдельном месте, где можно проводить тестирование, вплоть до момента принятия окончательного решения о переключении на неё как на основную.

              Читать дальше →
            • IT-фестиваль TechTrain 2019: как JUG.ru, JUGNsk и JUG.MSK участвовали в нём

                24-25 августа 2019 года в Санкт-Петербурге прошёл IT-фестиваль TechTrain 2019, в котором приняли участие представители Java-сообществ JUG.ru (Санкт-Петербург), JUGNsk (Новосибирск) и JUG.MSK (Москва). Как прошел фестиваль, что было на совместном стенде JUG — обо всём этом рассказывается дальше.


                Читать дальше →
              • Создание многомодульного Gradle проекта SpringBoot + Angular в IDEA

                Достаточно часто в моей практике используется связка Spring + Angular. Хочу поделится своим опытом по подготовке подобного проекта в среде разработки IntelliJ IDEA.


                Создаем пустой Gradle проект


                Для начала создадим пустой Gradle проект в IDEA, при этом снимите все галочки библиотек и фреймворков.




                Пусть наш артефакт будет «demo», а группа «com.habr». После создания проекта будет автоматически сгенерировано файлы settings.gradle и build.gradle со следующим содержанием:

                Читать дальше →
                • +19
                • 11.3k
                • 8
              • Введение в Redis с использованием Spring Boot

                • Translation
                Перевод статьи подготовлен специально для студентов курса «Разработчик на Spring Framework».



                В этой статье мы рассмотрим основы использования Redis через Spring Boot с помощью библиотеки Spring Data Redis.



                Мы создадим приложение, которое демонстрирует, как выполнять CRUD-операции через веб-интерфейс. Исходный код этого проекта доступен на GitHub.

                Что такое Redis?


                Redis — это хранилище данных с открытым исходным кодом, для структур данных «ключ-значение», которое можно использовать в качестве базы данных, кэша и брокера сообщений. С точки зрения реализации, хранилища «ключ-значение» являются одними из самых больших и старых представителей в мире NoSQL. Redis поддерживает такие структуры данных, как строки, хэши, списки, множества и отсортированные множества с запросами диапазонов.
                Читать дальше →
                • +22
                • 14.8k
                • 4
              • 10 самых распространенных ошибок Spring Framework

                Привет, Хабр! Представляю вашему вниманию перевод статьи «Top 10 Most Common Spring Framework Mistakes» автора Toni Kukurin.

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

                В этой статье мы рассмотрим некоторые из наиболее распространенных ошибок в Spring, особенно касающихся веб-приложений и Spring Boot. Как говорится на сайте Spring Boot, он навязывает представление о том, как должны быть построены промышленные приложения, поэтому в этой статье мы попытаемся продемонстрировать это представление и дать обзор некоторых советов, которые хорошо вольются в стандартный процесс разработки веб-приложений на Spring Boot.
                Если вы не очень хорошо знакомы со Spring Boot, но все же хотели бы попробовать некоторые из упомянутых вещей, я создал репозиторий GitHub, сопровождающий эту статью. Если в любом месте статьи вы почувствуете что потерялись, я рекомендую склонировать репозиторий на локальный компьютер и поиграть с кодом.
                Читать дальше →
                • +6
                • 10.3k
                • 6
              • Веб-приложение на Kotlin + Spring Boot + Vue.js

                Добрый день, дорогие обитатели Хабра!

                Не так давно мне представилась возможность реализовать небольшой проект без особых требований по технической части. То есть, я был волен выбирать стек технологий на своё усмотрение. Потому не преминул возможностью как следует «пощупать» модные, молодёжные многообещающие, но малознакомые мне на практике Kotlin и Vue.js, добавив туда уже знакомый Spring Boot и примерив всё это на незамысловатое веб-приложение.
                Посмотреть, что из этого вышло
              • Введение в Spring Boot Actuator

                • Translation
                Салют, хабровчане! Уже через неделю стартуют занятия в новой группе курса «Разработчик на Spring Framework». В связи с этим делимся с вами полезным материалом в котором рассказано о том, что такое Spring Actuator и чем он может быть полезен.



                1. Что такое Spring Actuator?
                2. Как добавить Spring Actuator в проект Maven или Gradle?
                3. Создание проекта Spring Boot с зависимостью Spring Actuator.
                4. Мониторинг приложений с Spring Actuator Endpoints.
                Читать дальше →
                • +5
                • 27.3k
                • 1
              • Мой первый взлом: сайт, позволяющий задавать любой пользовательский пароль

                • Translation
                Недавно я нашёл интересную уязвимость, позволяющую установить любому пользователю конкретного сайта любой пароль. Круто, да?

                Это было забавно, и я подумал, что можно написать интересную статью.

                На неё вы и наткнулись.



                Примечание: автор переведённой статьи не специалист по информационной безопасности, и это его первый экскурс в мир SQL-инъекций. Он просит быть «снисходительными к его наивности».

                Предупреждение: автор переведённой статьи не станет раскрывать сайт с этой уязвимостью. Не потому, что он сообщил о ней владельцу и связан узами молчания, а потому что хочет приберечь уязвимость для себя. Если вы вычислите этот сайт, пожалуйста, держите рот на замке (цыц).
                Читать дальше →
              • Добавляем Refresh Token


                  В прошлой статье я рассказывал про основы JWT. Если на пальцах, то это просто ключ, с помощью которого мы открываем дверь к приватным ресурсам. А что, если этот ключ украдут (точнее, сделают дубликат). Тогда кто-то еще сможет входить на сервер под вашим именем, причём мы об этом можем даже не узнать. Такого сценария мы не хотим допустить. Но что делать?

                  Читать дальше →
                • Как я чуть не подхватил вирус, пытаясь продать сапоги



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

                    Размышляя о судьбе ненужных вещей, я прикидывал, что с ними делать: выкинуть, порезать на тряпки, отдать донашивать младшему брату? Но для одной вещи ни один из этих способов не годился: то были кожаные сапоги 44 размера приличного вида, но порядком мне надоевшие. Их я решил продать на Avito. Загрузил фотографии, указал ненастоящее имя (информационная безопасность же), выставил сапоги, пару других вещей и пошёл спать. Откуда мне было знать, что это обернётся длительным анализом приложения на предмет скрытых угроз?
                    Читать дальше →