Я хочу добавить запросы из Android-приложения в белый список на своем сервере.

Вопрос или проблема

Я создал андроид-приложение, которое хочу добавить в Play Store. Оно должно взаимодействовать с отдельным бэкендом на Typescript.

По соображениям безопасности я добавил белый список CORS. Обычно я просто добавляю источники в белый список, скажем, facebook.com, но для приложения у меня нет идеи, как это сделать.

Я хочу отправлять GET и POST запросы на этот размещенный бэкенд.

Я пытался искать решение этой проблемы, но меня сбивает с толку жаргон. Я новичок в этом, и это приложение было написано с использованием Ionic. Ранее я создавал приложения с помощью Node.js, но никогда не делал мобильное приложение.

Вам не следует полагаться на CORS для обеспечения безопасности. CORS имеет значение только для браузеров — андроид-приложения полностью обходят CORS (если только приложение не является веб-браузером).

Лучший вариант — потребовать API-ключ на вашем сервере, а затем включить этот ключ в исходный код вашего приложения. Вы не сможете полностью скрыть этот ключ, но это лучше, чем оставлять его полностью открытым.

Ответ или решение

Создание Android-приложения, которое будет взаимодействовать с вашим backend, требует особого внимания к вопросам безопасности, особенно когда речь идет о CORS и авторизации. Давайте разберем, как правильно организовать взаимодействие между вашим приложением и сервером с TypeScript.

Во-первых, важно понимать, что CORS (Cross-Origin Resource Sharing) действует только в браузерах. Если ваше Android-приложение не является встроенным веб-браузером, то оно не будет подвержено ограничениям CORS. Это означает, что вы не обязаны добавлять URL вашего Android-приложения в белый список CORS на вашем сервере.

Вместо полагания на CORS, вам следует рассмотреть другие схемы безопасности:

  1. Использование API ключа:

    • Генерируйте уникальный API ключ для вашего приложения. Этот ключ будет использоваться для аутентификации при запросах к вашему серверу.
    • Включите этот ключ в запросы, отправляемые с вашего Android-приложения.
    • Хотя нельзя полностью скрыть этот ключ (так как его можно найти в исходном коде приложения), его использование все же обеспечит определенный уровень защиты.
  2. OAuth 2.0:

    • Если ваше приложение требует более сложной аутентификации, вы можете рассмотреть возможность использования протокола OAuth 2.0. Это обеспечит возможность безопасной передачи токенов и позволит вашим пользователям аутентифицироваться через существующие учетные записи.
  3. Шифрование данных:

    • Используйте HTTPS для всех запросов от приложения к серверу. Это защитит ваши данные от перехвата третьими лицами.
    • Вы можете также рассмотреть возможность шифрования чувствительных данных, таких как пользовательские учетные записи или подробности платежей, прежде чем отправлять их на сервер.
  4. Мониторинг и ограничение запросов:

    • На вашем сервере реализуйте механизмы мониторинга и ограничения количества запросов от одного API ключа. Это поможет защититься от злоумышленников, которые могут попытаться использовать ваш API ключ для выполнения злоумышленной активности.
  5. Регулярные обновления:

    • Обеспечьте регулярное обновление вашего приложения и сервера для устранения возможных уязвимостей. Изучайте лучшие практики безопасности и следите за их реализацией.

Для реализации API ключа, вы можете сделать следующее в вашем TypeScript backend:

import express from 'express';

const app = express();
const API_KEY = 'ваш_секретный_ключ';

// Middleware для проверки API ключа
app.use((req, res, next) => {
  const apiKey = req.header('x-api-key');
  if (apiKey && apiKey === API_KEY) {
    next();
  } else {
    res.status(403).send('Доступ запрещен: неверный API ключ.');
  }
});

// Остальные роуты вашего API
app.get('/api/endpoint', (req, res) => {
  res.send('Доступ к API разрешен!');
});

// Запуск сервера
app.listen(3000, () => {
  console.log('Сервер запущен на порту 3000');
});

Таким образом, несмотря на то, что ваше приложение будет работать на Android и свободно от ограничений CORS, важно использовать другие методы безопасности, чтобы защитить ваш backend от несанкционированного доступа.

Оцените материал
Добавить комментарий

Капча загружается...