rxd_txd
299 subscribers
514 photos
31 videos
22 files
2.79K links
Download Telegram
Очень важная уязвимость для тех, кто работает из дома

https://labs.unit221b.com/2020/04/04/wfh-security-advisory/
Forwarded from CTO On Live
🏗 Архитектура API и велосипеды (ч.1) 🚲

Самая успешная модель развития SaaS сервиса это наличие открытого API, так как именно оно помогает вашему сервису получить функции, которыми обладают другие и наоборот. Многие называют его REST API, сами правда не понимая, какие именно парадигмы и ограничения должны накладываться на такое API. За свою карьеру я поучаствовал во многих проектах и прорабатывал интеграции между различными сервисами или внутренними элементами системы (микросервисами). И к сожалению вынужден сказать, что подавляющее большинство разработчиков не считают необходимым посмотреть, а был ли уже изобретен велосипед до них и продолжают делать свои вариации протоколов взаимодействия с сервисом. Сказать по правде я и сам был таким, но возможно пост ниже поможет вам перешагнуть сразу через этот этап и открыть для себя стандарты.

💻 Разрабатывая API

Здесь я не буду писать о том, как надо проектировать базу и код, это отдельная огромная тема, но расскажу основные аспекты того, как могло бы работать ваше API

1. Всегда контролируйте код ответа. Не допускайте, чтобы сервис отвечал "200 OK", но при этом в теле ответа был допустим JSON { status: "error" } или вообще пустой ответ
2. Используйте правильные методы передачи данных (GET - выборка, POST - создание чего-либо и добавление файлов, PATCH/PUT - обновление, DELETE - удаление), это поможет вам самим гораздо правильнее роутить ваше приложение, а также проще отслеживать запросы по типам, через любой лог коллектор. Допустим пришел к вам запрос в ТП: "Аааа удалили важные данные, но мы не знаем когда". А у вас в логах все как POST /api/1.0/entity/123, что в этот момент происходило обновление или удаление? От какого метки надо восстановить данные? Правильный метод передачи вам поможет найти место гораздо быстрее
3. Не придумывайте свой формат ответов, а используйте стандарты. Если мы рассматриваем именно JSON over HTTP (что по факту сейчас стандарт отрасли, хотя как по мне лучше бы был gRPC+protobuf), то для меня лично самый удобный формат - это HAL в случае успешного ответа и Problem detail в случае какой-либо ошибки. Но стоит обратить сразу внимание, что некоторые статусы ответа не должны вообще содержать body, такие как например "204 No content"
4. Приложение должны быть stateless. Всю необходимую информацию для получения верного контекста запроса приложение должно получить из того же JWT токена
5. Не делайте универсальных методов, выгружающих все и сразу (если конечно это не какой-нибудь экспортер), а делайте ссылки от одного элемента в другой (смотри HAL)
6. В случае, если контент обновляемый, то не забывайте про заголовок ETag или Last-Modified, чтобы у того, кто запрашивает было ясное понимание, обновились данные или нет и надо ли запускать какие-то процессы у себя. Также как и заголовок If-Modified-Since с правильным ответом поможет сторонним командам обуздать ваше API легко и непринужденно
7. Крайне желательно потратить время и заиметь свой OAuth2-сервер для авторизации сторонних приложений
8. Ответ от вашего метода GET должен приниматься вашим же PATCH, то есть: Стороннее приложение запрашивает GET /api/1.0/entity/1, получает данные, как-то их модифицирует и отправляет обратно туже структуру на PATCH /api/1.0/entity/1, все проходит успешно и все счастливы и никаких конвертаций
9. Поддерживайте версионность API, либо через ссылку /api/{VERSION} или через обязательный заголовок, это избавит вас от огромного геморроя в будущем
10. Если в ответе есть дата и время, либо явно указывайте часовой пояс и сдвиг, либо используйте timestamp и работайте с utc.
Forwarded from CTO On Live
🏗 Архитектура API и велосипеды (ч.2) 🚲

11. По той же причине, что и в пункт 10 можно передавать обратно заголовок с используемой часовой зоной и текущим временем на сервере
12. Маркируйте ответ уникальным id в заголовке, чтобы было проще найти его в случае проблем
13. Крайне желательно отдавать реальное время отработки бекенда (можно также в заголовке) В этом случе риск, что к вам придут в ТП и будут говорить, что запрос долго отрабатывает (тогда как это не так) сойдут на нет.
14. Уберите из заголовков любое описание используемых технологий (заголовки Server/Powered-By) или же перебейте их кастомом
15. Лимитируйте запросы к API. Прекрасно для этих целей подходит nginx limit req module, а главное напишите это сразу в доку в ограничениях API
16. Исходя из пункта 15, не забудьте про документацию и пропишите регламент обновления документации по изменению API
17. Сделайте Zapier к своему сервису

На этому пока что всё, если у вас есть вопросы по теме, то всегда можете задать их мне лично @ea_realleo

🌐Ссылки по теме

- application/hal+json
- application/problem+json
- http status codes
- json web token
- ETag/Last-modified
- OAuth2
- ngx_http_limit_req_module
Forwarded from Мониторим ИТ
Одна из основных функций языка PromQL — агрегирование данных временных рядов в режиме реального времени. Эндрю Ньюдигейт, инженер в команде по инфраструктуре GitLab, рассказывает как этот язык можно использовать для обнаружения аномалий во временных рядах. А здесь можно посмотреть слайды презентации.
https://grep.app

Удобный поиск по опенсорсам
Forwarded from Security Wine (бывший - DevSecOps Wine) (Denis Yakimov)
Безопасная разработка - подборка книг

Подписчиков за 3 месяца на канале стало заметно больше и уверен, что далеко не все успели отобрать для себя полезные книги отмеченные здесь как #literature. Самое время, чтобы вспомнить.

Безопасный DevOps. Эффективная эксплуатация систем - маст хэв для погружения в тему. Требует базовых знаний по DevOps и охватывает лишь небольшой стенд, но этого достаточно, чтобы повторить стенд у себя и разобраться, что к чему.

Agile Application Security. Enabling Security in a CD pipeline - отличная книга для погружения в организационные процессы. Можно заказать версию на русском языке.

DevOpsSec. Securing Software through Continuous Delivery - отличная вводная книга, где вы сможете прямо в PDF найти ссылки на различные инструменты и описание лучших практик

CSSLP - Certified Secure Software Lifecycle Profession - большой гайд для подготовки к экзамену от ISC2 по обеспечению безопасности SDLC.

Docker Security. Using Containers Safely in Production - обзор того, как защитить Docker

Kubernetes Security - обзор того, как защитить кластер

Epic Failures in DevSecOps. Volume 1 and 2 - если вы прочитали уже все книги, но у вас все равно куча вопросов, например, кто "вообще должен за все это отвечать", то книга может помочь ответить на некоторые вопросы

Building Web Apps that Respect a User’s Privacy and Security - про безопасность веба. Описание по ссылке.

#literature
Forwarded from Karim Iskakov - канал (Karim Iskakov)
This media is not supported in your browser
VIEW IN TELEGRAM
Avatarify: we adapted First Order Motion Model to Zoom/Skype calls. Now you can be Elon Musk or anybody you want!

▶️ Full: youtu.be/lONuXGNqLO0, Demo: youtu.be/Q7LFDT-FRzs
🌐 github.com/alievk/avatarify
👤 @alievk, @karfly
📉 @loss_function_porn
​​macos-like TimeMachine but for Linux!

It uses rsync to incrementally back up your data to a different directory, hard disk or remote server via SSH. All operations are incremental, atomic and automatically resumable.

The goal of this project is to have a cross-operating system and minimal as possible backup script that can be easily reviewed by anyone without great effort. Additionally it should provide one task only and do it well without the need of external requirements and only rely on default installed tools.

https://github.com/cytopia/linux-timemachine

#shell #devops
Курс по Burp Suite

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

https://www.youtube.com/watch?v=udl4oqr_ylM&list=PLq9n8iqQJFDrwFe9AEDBlR1uSHEN7egQA
#burp #course
Forwarded from The Devs
Forwarded from 🇺🇦 Go for two :)
Note #64 New net/url.URL.Redacted method in go 1.15

В Go1.15 появится удобный метод net/url.URL.Redacted [1], по сути, похож на url.URL.String(), только заменяет пароли на xxxxxxx, будет удобно для логирования:

package main

import (
"fmt"
"net/url"
)

func main() {
u := &url.URL{
Scheme: "https",
User: url.UserPassword("user", "password"),
Host: "example.com",
Path: "foo/bar",
}
fmt.Println(u.Redacted())
u.User = url.UserPassword("me", "newerPassword")
fmt.Println(u.Redacted())
}
// gotip run main.go
// https://user:xxxxx@example.com/foo/bar
// https://me:xxxxx@example.com/foo/bar



Links:
[1] https://go-review.googlesource.com/c/go/+/207082/
Forwarded from oleg_log (Oleg Kovalov)
Не опоздал, а дал возможность еще каналов довести.

@overtimehate - хороший технический блог
@rxd_txd - и еще один не хуже!
@numstation - научные штучки и мемы)
@count0_digest & @sysadmin_tools - 2 канала, без которых я не могу жить
@experimentalchill - непревзойденные канал Даниила о С++

@sysadminsu - админские полезняшки
@bpblog - сочные кастомные клавиатуры
@some_link_here - полезные и интересные айти ссылки
@meta_it - сборник айти-каналов (хотя большинство я вам озвучил)
@sec_devops - и сюда же secure devops, как же без безопасности в докере?
@dereference_pointer_there - если интересен Rust и о его непопулярных вещах.

@software_engineering_blogs - лента постов от известных фирм, чем-то напоминает HN comments @hn_best_comments (от @korkoma)
@isast - анализ и сертификация безопасности приложений в промышленных масштабах
@golangquiz & @quizcpp - если хотите потестить свои скилы в Go и С++
@alexandersmind - личный айти бложек
@smmblog - на стыке IT и предпринимательства, продуктовая, предпринимательская сторона работы.
@pdp11ml - Domain Specific Computing for machine learning (хотя там кроме МЛ есть вещи)
@coderoll - о веб-разработке

@qtasep - о жизни и непонятной математике
@lowlyingscience - science 👌
@microservices_arch — канал называется микросервисы, но целом по архитектуре.
@dddevotion — канал про ДДД
@pathetic_low_freq - известные, но "жалкие" низкочастотники

Давайте, репостите!