Безопасность API:
Аутентификация
-
Не используйте
Basic Auth. Используйте стандартную проверку подлинности (например: JWT, OAuth). -
Не изобретайте велосипед для
аутентификации,создании токенов,хранения паролей. Используйте стандарты, проверенные библиотеки. -
Используйте
Max Retryи функции jail во время аутентификации. -
Используйте шифрование для всех конфиденциальных данных.
JWT (JSON Web Token)
Контроль доступа
OAuth
Запрос
- Используйте соответствующий HTTP-метод в соответствии с операцией:
GET (чтение),POST (создание),PUT / PATCH (замена / обновление)иDELETE (удаление), а также ответьте405 Method Not Allowed, если запрошенный метод не подходит для запрашиваемого ресурса. - Проверяй тип данных в заголовке
Accept, чтобы разрешить только поддерживаемые форматы (например,application/xml,application/jsonи т.д.) И отвечайте406 Not Acceptable, если тип не поддерживается. - Проверяйте, сможете ли вы обработать тип получаемых данных (например,
application/x-www-form-urlencoded,multipart/form-data,application/jsonи т.д.). - Проверьте пользовательский ввод во избежание распространенных уязвимостей (например:
XSS,SQL-инъекций,удаленное выполнение кодаи т.д.). - Не передавайте конфиденциальные данные (
учетные данные,пароли,токеныилиключи API) в URL-адресе, вместо него используйте стандартный заголовокAuthorization. - Используйте только шифрование на стороне сервера.
- Используйте единый API-шлюз, чтобы можно было настроить кеширование, ограничение на кол-во запросов, Spike Arrest, а также динамическое развертывание API.
Processing
Ответ
- Отправляйте заголовок
X-Content-Type-Options: nosniff. - Отправляйте заголовок
X-Frame-Options: deny. - Отправляйте заголовок
Content-Security-Policy: default-src 'none'. - Удалите заголовки, которые могут помочь злоумышленнику в исследовании вашего ресурса на уязвимости -
X-Powered-By,Server,X-AspNet-Versionи т.д. - Зафиксируйте
Content-Typeдля вашего ответа, если вы возвращаетеapplication/json, тогда запрос должен быть вapplication/json. - Не возвращайте конфиденциальные данные, такие как
учетные данные,пароли,токены. - Возвращайте код состояния в соответствии с итогами обработки. (Например:
200 OK,400 Bad Request,401 Unauthorized,405 Method Not Allowedи т.д.).