На примере простого REST API опишите источники уязвимостей (аутентификация, авторизация, валидация вводимых данных, SQL/NoSQL-инъекции, XSS, CSRF, утечки логов) и предложите набор практик и инструментов для защиты сервиса на этапе проектирования и тестирования
Ниже — компактное, практическое руководство на примере простого REST API например,сервиссресурсами/api/users,/api/postsиэндпоинтами/api/login,/api/registerнапример, сервис с ресурсами /api/users, /api/posts и эндпоинтами /api/login, /api/registerнапример,сервиссресурсами/api/users,/api/postsиэндпоинтами/api/login,/api/register. Для каждого класса уязвимостей — как они проявляются в таком API, пример ошибки проектирования, и какие практики/инструменты применять уже на этапе проектирования и тестирования.
Коротко о сценарии API
Авторизация: /api/login возвращает токен JWTилисессионныйcookieJWT или сессионный cookieJWTилисессионныйcookie.Пользовательские сущности: /api/users/{id} GET/PUT/DELETEGET/PUT/DELETEGET/PUT/DELETE, /api/posts CRUDCRUDCRUD.Клиент — SPA и мобильные клиенты, браузерный фронтенд использует токен/куки.
1) Аутентификация Что может пойти не так
Неправильная реализация JWT длинныйсрокжизни,хранениевlocalStorage→XSS‑кражадлинный срок жизни, хранение в localStorage → XSS‑кражадлинныйсрокжизни,хранениевlocalStorage→XSS‑кража.Отсутствие многофакторной аутентификации для чувствительных операций.Плохо защищённые пароли нетхешированиясдостаточнымиcost−параметраминет хеширования с достаточными cost-параметраминетхешированиясдостаточнымиcost−параметрами.
Практики на этапе проектирования
Выбирать проверенные протоколы: OAuth2 authorizationcode+PKCEдляSPAauthorization code + PKCE для SPAauthorizationcode+PKCEдляSPA, OpenID Connect, или хорошо продуманная сессия с secure HttpOnly cookies.Хранение паролей: Argon2 / bcrypt / scrypt с адекватными параметрами.JWT: короткий life-time для access token, refresh token с возможностью отзыва; хранить токены в HttpOnly Secure SameSite cookie еслииспользуетеcookieесли используете cookieеслииспользуетеcookie.Защита от брутфорса: rate limiting, lockout, CAPTCHAs для регистрации/входа.
2) Авторизация accesscontrolaccess controlaccesscontrol
Что может пойти не так
Недостаточные проверки на уровне ресурсов IDOR—InsecureDirectObjectReferenceIDOR — Insecure Direct Object ReferenceIDOR—InsecureDirectObjectReference: пользователь A может GET/DELETE /api/users/42, принадлежащий пользователю B.Применение авторизации только на frontend.
Практики проектирования
Централизованная проверка прав доступа middlewaremiddlewaremiddleware и контроль на уровне бизнес-логики object−levelobject-levelobject−level.Принцип наименьших привилегий RBAC/ABACRBAC/ABACRBAC/ABAC. Для сложных правил — хранить политику отдельно OPA,CasbinOPA, CasbinOPA,Casbin.Проверка входящих идентификаторов: не полагаться на данные клиента например,userIdизтелазапросанапример, userId из тела запросанапример,userIdизтелазапроса.
Тестирование
Автотесты на попытки доступа к чужим ресурсам интеграционныетестыинтеграционные тестыинтеграционныетесты.Fuzz/DAST: сценарии доступа разными ролями.Ручной pentest + сценарии IDOR Burp,Postman+NewmanсценарииBurp, Postman + Newman сценарииBurp,Postman+Newmanсценарии.
3) Валидация вводимых данных Что может пойти не так
Использовать контракт API: OpenAPI / JSON Schema и валидировать вход на границе gateway,frameworkmiddlewaregateway, framework middlewaregateway,frameworkmiddleware.Белый список полей rejectunknownpropertiesreject unknown propertiesrejectunknownproperties, строгие типы, ограничения длины и форматов.Ограничение размеров тела запроса, контроль типов Content−TypeContent-TypeContent−Type, проверка загружаемых файлов mime+инспекциясодержимогоmime + инспекция содержимогоmime+инспекциясодержимого.
Инструменты/тестирование
Middleware в runtime: express-openapi-validator, Ajv JSONSchemaJSON SchemaJSONSchema, marshmallow PythonPythonPython.Автотесты, генерируемые по OpenAPI schemathesis—фреймворкдляFuzzтестированияOpenAPIschemathesis — фреймворк для Fuzz тестирования OpenAPIschemathesis—фреймворкдляFuzzтестированияOpenAPI.Существительные unit/integration tests и property-based tests Hypothesis/QuickCheckHypothesis/QuickCheckHypothesis/QuickCheck.
4) SQL/NoSQL-инъекции Что может пойти не так
Конкатенация строк при формировании SQL (например, "... WHERE id = " + req.query.id).В NoSQL MongoDBMongoDBMongoDB — передача объекта запроса с операторами ($gt, $where) от клиента и выполнение его напрямую.
Практики проектирования
Использовать параметризованные запросы / подготовленные выражения / ORM с параметрами.Для NoSQL: запрещать передачу операторов в пользовательских полях; использовать строгую сериализацию/сборку запросов неподставлятьсырыеJSONвзапросне подставлять сырые JSON в запроснеподставлятьсырыеJSONвзапрос.Принцип минимальных разрешений DB‑аккаунта тольконужныетаблицы/операциитолько нужные таблицы/операциитольконужныетаблицы/операции.
Инструменты/тестирование
SAST: FindSecBugs JavaJavaJava, Bandit PythonPythonPython, Semgrep — правила на поиск небезопасных конкатенаций.DAST/fuzz: OWASP ZAP, SQLmap дляSQLдля SQLдляSQL, NoSQLMap.Код‑ревью чеклисты и CI‑правила, блокирующие использование небезопасных API.
5) XSS вконтекстеAPIв контексте APIвконтекстеAPI
Что может пойти не так
API возвращает данные, которые фронтенд встраивает в DOM без экранирования например,комментарийс<script>например, комментарий с <script>например,комментарийс<script>.Отправка HTML в полях, которое позже рендерится в браузере.
Практики проектирования
API должен указывать, что данные — это данные, а рендеринг и экранирование выполняются на клиенте. Но безопаснее — фильтровать/валидировать вход еслиHTMLнеразрешенесли HTML не разрешенеслиHTMLнеразрешен.На клиенте — всегда использовать контекстное экранирование при вставке в HTML неinnerHTMLбезсанкционированногошаблонизаторане innerHTML без санкционированного шаблонизаторанеinnerHTMLбезсанкционированногошаблонизатора.CSP ContentSecurityPolicyContent Security PolicyContentSecurityPolicy на фронтенд и заголовки безопасности X−Content−Type−Options,X−Frame−Optionsит.д.X-Content-Type-Options, X-Frame-Options и т.д.X−Content−Type−Options,X−Frame−Optionsит.д..
Инструменты/тестирование
DAST: OWASP ZAP, Burp для проверки XSS.Тесты на отражённый/хранимый XSS: автоматические сценарии с payload’ами.SCA для фронтенда и проверка шаблонов рендеринга.
6) CSRF Что может пойти не так
Cookie‑базированная аутентификация без CSRF‑защиты позволит атакующему выполнить нежелательные действия от имени пользователя например,POST/api/postsнапример, POST /api/postsнапример,POST/api/posts.
Практики проектирования
Для cookie auth: использовать CSRF‑токены synchronizertokenpatternsynchronizer token patternsynchronizertokenpattern или double submit cookie.Использовать SameSite=Lax/Strict для куки, а для SPA — предпочтительнее хранить access token в HttpOnly cookie + CSRF token.Для API, который требует Authorization header BearerBearerBearer, CSRF менее актуален — т.к. злоумышленник не может прочитать/поставить заголовок из чужого сайта.
Инструменты/тестирование
Проверки наличия и валидации CSRF токенов в тестах.DAST инструменты умеют эмулировать CSRF‑атаки.
7) Утечки логов и секретов Что может пойти не так
В логах попадают пароли, токены, PII личныеданныеличные данныеличныеданные — журналы сохраняются долго, могут быть отправлены в внешние системы.Конфигурация CI/CD содержит секреты в открытом виде, закоммичены в репозиторий.
Практики проектирования
Политика логирования: не логировать пароли, токены, полные персональные данные; использовать redaction/masking.Структурированное логирование JSONJSONJSON + фильтрация чувствительных полей.Управление секретами: Vault HashiCorpVaultHashiCorp VaultHashiCorpVault, AWS Secrets Manager, Azure Key Vault; не хранить в репозитории.Ограничение доступа к логам, ротация, ретеншен-правила, шифрование логов в хранилище.
Инструменты/тестирование
Secret scanning в CI: git-secrets, truffleHog, detect-secrets.Линтеры/сканеры конфигурации кпримеру,checkovк примеру, checkovкпримеру,checkov.Инструменты для маскировки логов в runtime buckerbuckerbucker.Мониторинг/SIEM, alert при аномалиях логов.
Дополнительные практики общаябезопасностьAPIобщая безопасность APIобщаябезопасностьAPI
TLS вездевездевезде — HSTS, сильные cipher suites, проверка сертификата.Защита от DDoS: rate limiting nginx,Envoy,APIGatewaynginx, Envoy, API Gatewaynginx,Envoy,APIGateway, WAF.Заголовки безопасности: CSP, X-Frame-Options, Referrer-Policy, Strict-Transport-Security.Контроль CORS: не ставьте Access-Control-Allow-Origin: *; разрешайте конкретные происхождения.Версионирование API и возможность быстрого отзыва старых версий.Мониторинг и аудит trace,auditlogstrace, audit logstrace,auditlogs, оповещения о аномалиях.
Инструменты для защиты и тестирования конкретноконкретноконкретно
Проектирование и контракт: OpenAPI/Swagger, JSON Schema, Prism/mock servers.Contract testing: Dredd, Schemathesis, Postman + Newman.SAST и правила безопасности: Semgrep универсальныйуниверсальныйуниверсальный, Bandit PythonPythonPython, gosec GoGoGo, FindSecBugs/SpotBugs JavaJavaJava, Brakeman RubyRubyRuby.SCA зависимостизависимостизависимости: Snyk, Dependabot, WhiteSource, OWASP Dependency-Check.DAST / API fuzzing: OWASP ZAP, Burp Suite, Microsoft RESTler дляавтоматическойгенерациииfuzzдляRESTAPIдля автоматической генерации и fuzz для REST APIдляавтоматическойгенерациииfuzzдляRESTAPI, Schemathesis OpenAPIfuzzingOpenAPI fuzzingOpenAPIfuzzing.Pentest / динамический анализ: Burp Suite Professional, OWASP ZAP, SQLmap, NoSQLMap.Политики/авторизация: Open Policy Agent OPAOPAOPA, Casbin.Секреты и конфигурация: HashiCorp Vault, AWS/Google/Azure Secrets Manager, git-secrets.CI/CD интеграция: Integrate SAST/SCA/DAST in CI GitHubActions,GitLabCIGitHub Actions, GitLab CIGitHubActions,GitLabCI — блокировать PR при уязвимостях.
Пример чек‑листа безопасности на этапе проектирования
Аутентификация: выбран проверенный протокол; хранятся хэши паролей; токены с коротким TTL.Авторизация: централизованный middleware; object-level checks; тесты RBAC.Валидация: OpenAPI + JSON Schema; reject unknown props; лимиты размеров.Инъекции: parameterized queries; no direct construction of DB queries from raw input.XSS/CSRF: CSP; SameSite и CSRF tokens; frontend всегда экранирует данные.Логирование: маскирование секретов; ретеншен; доступ по RBAC.TLS: все endpoint’ы через HTTPS; HSTS.CI: SAST/SCA/DAST + secret scanning включены.Мониторинг: alert на аномалии трафик/ошибкитрафик/ошибкитрафик/ошибки, аудиты доступа.
Рекомендации по workflow тестирования
На этапе PR: запуск SAST + SCA + базовых unit/integration тестов, проверка OpenAPI контракта.Nightly CI: DAST-проход OWASPZAPOWASP ZAPOWASPZAP по развернутому staging, Schemathesis fuzz.Перед релизом: внешний pentest/bug bounty для критичных изменений.Runtime: WAF с блокировками, мониторинг, регулярные ревью логов.
Коротко о приоритетах чтобыначатьчтобы начатьчтобыначать
Внедрить HTTPS и проверку сертификатов.Ввести валидацию по схеме OpenAPIOpenAPIOpenAPI на входе и ответах.Заменить небезопасные SQL/NoSQL запросы на параметризованные/ORM.Ввести rate limiting и централизованную авторизацию.Настроить CI с SAST и SCA; периодически запускать DAST и pentest.
Если хотите, могу:
Составить конкретный security checklist и PR‑шаблон для вашей команды;Сгенерировать пример OpenAPI + схема и показать middleware-валидацию для конкретного языка/фреймворка Express/Koa,Spring,Django/Flask,FastAPIит.д.Express/Koa, Spring, Django/Flask, FastAPI и т.д.Express/Koa,Spring,Django/Flask,FastAPIит.д.;Подготовить набор тестов Schemathesis/RESTler, которые вы сможете запустить в CI.
Ниже — компактное, практическое руководство на примере простого REST API например,сервиссресурсами/api/users,/api/postsиэндпоинтами/api/login,/api/registerнапример, сервис с ресурсами /api/users, /api/posts и эндпоинтами /api/login, /api/registerнапример,сервиссресурсами/api/users,/api/postsиэндпоинтами/api/login,/api/register. Для каждого класса уязвимостей — как они проявляются в таком API, пример ошибки проектирования, и какие практики/инструменты применять уже на этапе проектирования и тестирования.
Коротко о сценарии API
Авторизация: /api/login возвращает токен JWTилисессионныйcookieJWT или сессионный cookieJWTилисессионныйcookie.Пользовательские сущности: /api/users/{id} GET/PUT/DELETEGET/PUT/DELETEGET/PUT/DELETE, /api/posts CRUDCRUDCRUD.Клиент — SPA и мобильные клиенты, браузерный фронтенд использует токен/куки.1) Аутентификация
Неправильная реализация JWT длинныйсрокжизни,хранениевlocalStorage→XSS‑кражадлинный срок жизни, хранение в localStorage → XSS‑кражадлинныйсрокжизни,хранениевlocalStorage→XSS‑кража.Отсутствие многофакторной аутентификации для чувствительных операций.Плохо защищённые пароли нетхешированиясдостаточнымиcost−параметраминет хеширования с достаточными cost-параметраминетхешированиясдостаточнымиcost−параметрами.Что может пойти не так
Практики на этапе проектирования
Выбирать проверенные протоколы: OAuth2 authorizationcode+PKCEдляSPAauthorization code + PKCE для SPAauthorizationcode+PKCEдляSPA, OpenID Connect, или хорошо продуманная сессия с secure HttpOnly cookies.Хранение паролей: Argon2 / bcrypt / scrypt с адекватными параметрами.JWT: короткий life-time для access token, refresh token с возможностью отзыва; хранить токены в HttpOnly Secure SameSite cookie еслииспользуетеcookieесли используете cookieеслииспользуетеcookie.Защита от брутфорса: rate limiting, lockout, CAPTCHAs для регистрации/входа.Инструменты/тестирование
Unit/integration tests проверки истечения срока токенов, отзыва refresh token.Тесты на брутфорс/повторение — Hydra, OWASP ZAP fuzzer.CI: проверка конфигурации auth например,наличиеHTTPSнапример, наличие HTTPSнапример,наличиеHTTPS.2) Авторизация accesscontrolaccess controlaccesscontrol Что может пойти не так
Недостаточные проверки на уровне ресурсов IDOR—InsecureDirectObjectReferenceIDOR — Insecure Direct Object ReferenceIDOR—InsecureDirectObjectReference: пользователь A может GET/DELETE /api/users/42, принадлежащий пользователю B.Применение авторизации только на frontend.Практики проектирования
Централизованная проверка прав доступа middlewaremiddlewaremiddleware и контроль на уровне бизнес-логики object−levelobject-levelobject−level.Принцип наименьших привилегий RBAC/ABACRBAC/ABACRBAC/ABAC. Для сложных правил — хранить политику отдельно OPA,CasbinOPA, CasbinOPA,Casbin.Проверка входящих идентификаторов: не полагаться на данные клиента например,userIdизтелазапросанапример, userId из тела запросанапример,userIdизтелазапроса.Тестирование
Автотесты на попытки доступа к чужим ресурсам интеграционныетестыинтеграционные тестыинтеграционныетесты.Fuzz/DAST: сценарии доступа разными ролями.Ручной pentest + сценарии IDOR Burp,Postman+NewmanсценарииBurp, Postman + Newman сценарииBurp,Postman+Newmanсценарии.3) Валидация вводимых данных
Принятие произвольного JSON без проверки схемы → непредсказуемое поведение, уязвимости.Недостаточные проверки загружаемых файлов тип,размертип, размертип,размер.Что может пойти не так
Практики проектирования
Использовать контракт API: OpenAPI / JSON Schema и валидировать вход на границе gateway,frameworkmiddlewaregateway, framework middlewaregateway,frameworkmiddleware.Белый список полей rejectunknownpropertiesreject unknown propertiesrejectunknownproperties, строгие типы, ограничения длины и форматов.Ограничение размеров тела запроса, контроль типов Content−TypeContent-TypeContent−Type, проверка загружаемых файлов mime+инспекциясодержимогоmime + инспекция содержимогоmime+инспекциясодержимого.Инструменты/тестирование
Middleware в runtime: express-openapi-validator, Ajv JSONSchemaJSON SchemaJSONSchema, marshmallow PythonPythonPython.Автотесты, генерируемые по OpenAPI schemathesis—фреймворкдляFuzzтестированияOpenAPIschemathesis — фреймворк для Fuzz тестирования OpenAPIschemathesis—фреймворкдляFuzzтестированияOpenAPI.Существительные unit/integration tests и property-based tests Hypothesis/QuickCheckHypothesis/QuickCheckHypothesis/QuickCheck.4) SQL/NoSQL-инъекции
Конкатенация строк при формировании SQL (например, "... WHERE id = " + req.query.id).В NoSQL MongoDBMongoDBMongoDB — передача объекта запроса с операторами ($gt, $where) от клиента и выполнение его напрямую.Что может пойти не так
Практики проектирования
Использовать параметризованные запросы / подготовленные выражения / ORM с параметрами.Для NoSQL: запрещать передачу операторов в пользовательских полях; использовать строгую сериализацию/сборку запросов неподставлятьсырыеJSONвзапросне подставлять сырые JSON в запроснеподставлятьсырыеJSONвзапрос.Принцип минимальных разрешений DB‑аккаунта тольконужныетаблицы/операциитолько нужные таблицы/операциитольконужныетаблицы/операции.Инструменты/тестирование
SAST: FindSecBugs JavaJavaJava, Bandit PythonPythonPython, Semgrep — правила на поиск небезопасных конкатенаций.DAST/fuzz: OWASP ZAP, SQLmap дляSQLдля SQLдляSQL, NoSQLMap.Код‑ревью чеклисты и CI‑правила, блокирующие использование небезопасных API.5) XSS вконтекстеAPIв контексте APIвконтекстеAPI Что может пойти не так
API возвращает данные, которые фронтенд встраивает в DOM без экранирования например,комментарийс<script>например, комментарий с <script>например,комментарийс<script>.Отправка HTML в полях, которое позже рендерится в браузере.Практики проектирования
API должен указывать, что данные — это данные, а рендеринг и экранирование выполняются на клиенте. Но безопаснее — фильтровать/валидировать вход еслиHTMLнеразрешенесли HTML не разрешенеслиHTMLнеразрешен.На клиенте — всегда использовать контекстное экранирование при вставке в HTML неinnerHTMLбезсанкционированногошаблонизаторане innerHTML без санкционированного шаблонизаторанеinnerHTMLбезсанкционированногошаблонизатора.CSP ContentSecurityPolicyContent Security PolicyContentSecurityPolicy на фронтенд и заголовки безопасности X−Content−Type−Options,X−Frame−Optionsит.д.X-Content-Type-Options, X-Frame-Options и т.д.X−Content−Type−Options,X−Frame−Optionsит.д..Инструменты/тестирование
DAST: OWASP ZAP, Burp для проверки XSS.Тесты на отражённый/хранимый XSS: автоматические сценарии с payload’ами.SCA для фронтенда и проверка шаблонов рендеринга.6) CSRF
Cookie‑базированная аутентификация без CSRF‑защиты позволит атакующему выполнить нежелательные действия от имени пользователя например,POST/api/postsнапример, POST /api/postsнапример,POST/api/posts.Что может пойти не так
Практики проектирования
Для cookie auth: использовать CSRF‑токены synchronizertokenpatternsynchronizer token patternsynchronizertokenpattern или double submit cookie.Использовать SameSite=Lax/Strict для куки, а для SPA — предпочтительнее хранить access token в HttpOnly cookie + CSRF token.Для API, который требует Authorization header BearerBearerBearer, CSRF менее актуален — т.к. злоумышленник не может прочитать/поставить заголовок из чужого сайта.Инструменты/тестирование
Проверки наличия и валидации CSRF токенов в тестах.DAST инструменты умеют эмулировать CSRF‑атаки.7) Утечки логов и секретов
В логах попадают пароли, токены, PII личныеданныеличные данныеличныеданные — журналы сохраняются долго, могут быть отправлены в внешние системы.Конфигурация CI/CD содержит секреты в открытом виде, закоммичены в репозиторий.Что может пойти не так
Практики проектирования
Политика логирования: не логировать пароли, токены, полные персональные данные; использовать redaction/masking.Структурированное логирование JSONJSONJSON + фильтрация чувствительных полей.Управление секретами: Vault HashiCorpVaultHashiCorp VaultHashiCorpVault, AWS Secrets Manager, Azure Key Vault; не хранить в репозитории.Ограничение доступа к логам, ротация, ретеншен-правила, шифрование логов в хранилище.Инструменты/тестирование
Secret scanning в CI: git-secrets, truffleHog, detect-secrets.Линтеры/сканеры конфигурации кпримеру,checkovк примеру, checkovкпримеру,checkov.Инструменты для маскировки логов в runtime buckerbuckerbucker.Мониторинг/SIEM, alert при аномалиях логов.Дополнительные практики общаябезопасностьAPIобщая безопасность APIобщаябезопасностьAPI
TLS вездевездевезде — HSTS, сильные cipher suites, проверка сертификата.Защита от DDoS: rate limiting nginx,Envoy,APIGatewaynginx, Envoy, API Gatewaynginx,Envoy,APIGateway, WAF.Заголовки безопасности: CSP, X-Frame-Options, Referrer-Policy, Strict-Transport-Security.Контроль CORS: не ставьте Access-Control-Allow-Origin: *; разрешайте конкретные происхождения.Версионирование API и возможность быстрого отзыва старых версий.Мониторинг и аудит trace,auditlogstrace, audit logstrace,auditlogs, оповещения о аномалиях.Инструменты для защиты и тестирования конкретноконкретноконкретно
Проектирование и контракт:OpenAPI/Swagger, JSON Schema, Prism/mock servers.Contract testing: Dredd, Schemathesis, Postman + Newman.SAST и правила безопасности:
Semgrep универсальныйуниверсальныйуниверсальный, Bandit PythonPythonPython, gosec GoGoGo, FindSecBugs/SpotBugs JavaJavaJava, Brakeman RubyRubyRuby.SCA зависимостизависимостизависимости:
Snyk, Dependabot, WhiteSource, OWASP Dependency-Check.DAST / API fuzzing:
OWASP ZAP, Burp Suite, Microsoft RESTler дляавтоматическойгенерациииfuzzдляRESTAPIдля автоматической генерации и fuzz для REST APIдляавтоматическойгенерациииfuzzдляRESTAPI, Schemathesis OpenAPIfuzzingOpenAPI fuzzingOpenAPIfuzzing.Pentest / динамический анализ:
Burp Suite Professional, OWASP ZAP, SQLmap, NoSQLMap.Политики/авторизация:
Open Policy Agent OPAOPAOPA, Casbin.Секреты и конфигурация:
HashiCorp Vault, AWS/Google/Azure Secrets Manager, git-secrets.CI/CD интеграция:
Integrate SAST/SCA/DAST in CI GitHubActions,GitLabCIGitHub Actions, GitLab CIGitHubActions,GitLabCI — блокировать PR при уязвимостях.
Пример чек‑листа безопасности на этапе проектирования
Аутентификация: выбран проверенный протокол; хранятся хэши паролей; токены с коротким TTL.Авторизация: централизованный middleware; object-level checks; тесты RBAC.Валидация: OpenAPI + JSON Schema; reject unknown props; лимиты размеров.Инъекции: parameterized queries; no direct construction of DB queries from raw input.XSS/CSRF: CSP; SameSite и CSRF tokens; frontend всегда экранирует данные.Логирование: маскирование секретов; ретеншен; доступ по RBAC.TLS: все endpoint’ы через HTTPS; HSTS.CI: SAST/SCA/DAST + secret scanning включены.Мониторинг: alert на аномалии трафик/ошибкитрафик/ошибкитрафик/ошибки, аудиты доступа.Рекомендации по workflow тестирования
На этапе PR: запуск SAST + SCA + базовых unit/integration тестов, проверка OpenAPI контракта.Nightly CI: DAST-проход OWASPZAPOWASP ZAPOWASPZAP по развернутому staging, Schemathesis fuzz.Перед релизом: внешний pentest/bug bounty для критичных изменений.Runtime: WAF с блокировками, мониторинг, регулярные ревью логов.Коротко о приоритетах чтобыначатьчтобы начатьчтобыначать
Внедрить HTTPS и проверку сертификатов.Ввести валидацию по схеме OpenAPIOpenAPIOpenAPI на входе и ответах.Заменить небезопасные SQL/NoSQL запросы на параметризованные/ORM.Ввести rate limiting и централизованную авторизацию.Настроить CI с SAST и SCA; периодически запускать DAST и pentest.Если хотите, могу:
Составить конкретный security checklist и PR‑шаблон для вашей команды;Сгенерировать пример OpenAPI + схема и показать middleware-валидацию для конкретного языка/фреймворка Express/Koa,Spring,Django/Flask,FastAPIит.д.Express/Koa, Spring, Django/Flask, FastAPI и т.д.Express/Koa,Spring,Django/Flask,FastAPIит.д.;Подготовить набор тестов Schemathesis/RESTler, которые вы сможете запустить в CI.